$result = array( 0=>array('a'=>1,'b'=>'Hello'), 1=>array('a'=>1,'b'=>'other'), 2=>array('a'=>1,'b'=>'other'), );
Если он дублируется, удалите его, поэтому результат будет следующим:
$result = array( 0=>array('a'=>1,'b'=>'Hello'), 1=>array('a'=>1,'b'=>'other') );
Может ли кто-нибудь это знать?
благодаря
Независимо от того, что другие предлагают здесь, вы ищете функцию, называемую array_unique
Docs . Здесь важно установить второй параметр в SORT_REGULAR
а затем задание будет простым:
array_unique($result, SORT_REGULAR);
Значение SORT_REGULAR
:
обычно сравнивайте предметы (не меняйте типы)
И это то, что вы хотите. Вы хотите сравнить массивы Docs здесь и не меняете свой тип на строку (которая была бы по умолчанию, если параметр не задан).
array_unique
делает строгое сравнение ( ===
в PHP), для массивов это означает:
$a === $b
TRUE
если $ a и $ b имеют одинаковые пары ключ / значение в одном и том же порядке и одного и того же типа.
Выход ( демо ):
Array ( [0] => Array ( [a] => 1 [b] => Hello ) [1] => Array ( [a] => 1 [b] => other ) )
Во-первых, вы не можете использовать plain array_unique
для этой проблемы, потому что array_unique внутренне обрабатывает элементы массива как строки, поэтому «Can not convert Array to String» будут появляться при использовании array_unique для этого.
Поэтому попробуйте следующее:
$result = array( 0=>array('a'=>1,'b'=>'Hello'), 1=>array('a'=>1,'b'=>'other'), 2=>array('a'=>1,'b'=>'other') ); $unique = array_map("unserialize", array_unique(array_map("serialize", $result))); print_r($unique);
Результат:
Array ( [0] => Array ( [a] => 1 [b] => Hello ) [1] => Array ( [a] => 1 [b] => other ) )
Сериализация очень удобна для таких проблем.
Если вы чувствуете, что для вас слишком много магии , ознакомьтесь с этим сообщением в блоге
function array_multi_unique($multiArray){ $uniqueArray = array(); foreach($multiArray as $subArray){ if(!in_array($subArray, $uniqueArray)){ $uniqueArray[] = $subArray; } } return $uniqueArray; } $unique = array_multi_unique($result); print_r($unique);
По иронии судьбы, in_array
работает для массивов, где array_unique
нет.