Мне нужна функция array_unique
для массивов внутри массива.
Дело – должно быть равным, но результат «не равен»:
<?php $arr=array(array('a',1),array('a',2)); $arr2=array_unique($arr); if($arr2==$arr){ echo "equal"; } else{ echo "not equal"; } ?>
Как код должен быть изменен, чтобы получить выходной «равный»?
Вы должны изменить свой вызов для array_unique
чтобы он включал флаг SORT_REGULAR
.
$arr2 = array_unique($arr, SORT_REGULAR);
Если вы хотите проверить, имеет ли внешний массив уникальные записи, сначала сначала сначала проиндексируйте внутреннее содержимое для сравнения:
$arr1 = array_map("serialize", $arr); $arr2 = array_unique($arr1); if ($arr2 == $arr1) {
function array_unique_when_values_are_serializable($main_array) { return array_map('unserialize', array_values(array_unique(array_map('serialize', $main_array)))); }