this should work fine:
put your arrays in one array, as I did in $arrays, and then:
<?php
$arrays = [
array('a'=>1, 'b'=>2, 'c'=>3, 'd'=>4),
array('a'=>1, 'b'=>2, 'c'=>3, 'd'=>4),
array('a'=>1, 'b'=>2, 'c'=>3, 'd'=>4),
array('a'=>1, 'b'=>2, 'c'=>4, 'd'=>3),
];
$result = [];
$keys = array_keys($arrays[0]);
for($i=0; $i < sizeof($arrays); $i++){
$sa = array();
for($k=$i+1; $k < sizeof($arrays); $k++){
$similar = false;
for($j=0; $j < 4; $j++){
($similar = $arrays[$i][$keys[$j]] == $arrays[$k][$keys[$j]] ? true : false) ? null : ($j=3);
}
$similar ? (in_array($i, $sa) ? null : array_push($sa, $i) && in_array($k, $sa) ? null : array_push($sa, $k)) : null;
$similar ? $i=$k : null;
}
empty($sa) ? null : ($result[] = $sa);
}
for($j=0; $j < sizeof($arrays); $j++){
$f = false;
for($i=0; $i < sizeof($result); $i++){
in_array($j, $result[$i]) ? $f = true : null;
}
if(!$f){
$sa = array();
array_push($sa, $j);
array_push($result, $sa);
}
}
, $result , - $
:
array(2) {
[0]=> array(3) {
[0]=> int(0)
[1]=> int(1)
[2]=> int(2)
},
[1]=> array(1) {
[0]=> int(3)
}
}
, $ ,
$ [0], $ [1] $ [2] ( 1), $ [3] ( 2)
N.B: , - .