Как использовать функцию array_unique в PHP для работы с уникальными элементами массива
Метод "array_unique" в PHP позволяет удалить повторяющиеся элементы из массива для создания уникального списка значений.
Пример использования:
$array = array(1, 2, 2, 3, 3, 4, 5, 5);
$unique_array = array_unique($array);
print_r($unique_array);
В результате работы кода выше, на экран будет выведен следующий массив:
Array
(
[0] => 1
[1] => 2
[3] => 3
[5] => 4
[6] => 5
)
Как видно из вывода, значения 2 и 3 были удалены из исходного массива, так как они повторяются.
Метод "array_unique" работает с любыми типами данных, в том числе с объектами. Если в массиве содержатся объекты, метод будет сравнивать объекты между собой по ссылке, а не по содержимому.
class TestClass
{
public $value;
public function __construct($value)
{
$this->value = $value;
}
}
$array = array(new TestClass(1), new TestClass(2), new TestClass(1), new TestClass(3));
$unique_array = array_unique($array);
print_r($unique_array);
В результате работы кода выше, на экран будет выведен следующий массив:
Array
(
[0] => TestClass Object
(
[value] => 1
)
[1] => TestClass Object
(
[value] => 2
)
[3] => TestClass Object
(
[value] => 3
)
)
Как видно, из массива были удалены два элемента, которые содержали объект с значением 1, но не были уникальными по ссылке на этот объект.
Можно также использовать метод "array_unique" для удаления дубликатов из многомерного массива. В этом случае метод будет сравнивать каждый вложенный массив с другими вложенными массивами.
$array = array(
array('id' => 1, 'name' => 'John'),
array('id' => 2, 'name' => 'Mary'),
array('id' => 1, 'name' => 'Peter'),
array('id' => 3, 'name' => 'Julia'),
array('id' => 2, 'name' => 'Jack'),
array('id' => 4, 'name' => 'Ann'),
);
$unique_array = array_map("unserialize", array_unique(array_map("serialize", $array)));
print_r($unique_array);
В результате работы кода выше, на экран будет выведен следующий массив:
Array
(
[0] => Array
(
[id] => 1
[name] => John
)
[1] => Array
(
[id] => 2
[name] => Mary
)
[2] => Array
(
[id] => 3
[name] => Julia
)
[5] => Array
(
[id] => 4
[name] => Ann
)
)
Как видно, из исходного многомерного массива были удалены все дубликаты элементов, которые имели одинаковое значение ключа "id". Для этого массив был сериализован и преобразован в одномерный массив, затем была выполнена операция "array_unique", после чего массив был десериализован и преобразован обратно в многомерный массив.