array_unique для массивов внутри массива - PullRequest
15 голосов
/ 06 марта 2011

Мне нужна функция типа array_unique для массивов внутри массива.

Случай - должен быть равен, но вывод "не равен":

<?php
$arr=array(array('a',1),array('a',2));
$arr2=array_unique($arr);
if($arr2==$arr){
  echo "equal";
}
else{
  echo "not equal";
}
?>

Как должен быть кодизменилось, чтобы получить вывод "равно"?

Ответы [ 3 ]

40 голосов
/ 06 марта 2011

Вы должны изменить свой вызов на array_unique, чтобы он включал флаг SORT_REGULAR.

$arr2 = array_unique($arr, SORT_REGULAR);
2 голосов
/ 06 марта 2011

Если вы хотите проверить, есть ли во внешнем массиве уникальные записи, сначала сравните внутреннее содержимое для сравнения:

$arr1 = array_map("serialize", $arr);
$arr2 = array_unique($arr1);
if ($arr2 == $arr1) {
0 голосов
/ 03 апреля 2015
function array_unique_when_values_are_serializable($main_array) {
    return array_map('unserialize', array_values(array_unique(array_map('serialize', $main_array))));
}
...