Ответ 1
Вы должны изменить свой вызов для array_unique
, чтобы он включал флаг SORT_REGULAR
.
$arr2 = array_unique($arr, SORT_REGULAR);
Мне нужна функция типа 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))));
}