Есть ли способ поместить два или более массивов в функцию array_unique ()?
Если нет, есть ли другое решение для получения уникальных результатов от нескольких массивов?
Ответ на первую часть вашего вопроса: НЕТ.
Определение функции array_unique в руководстве по PHP говорится, что array_unique
принимает ровно два аргумента, один массив и необязательное целое число, которое определяет поведение функции сортировки.
array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )
Вместо того, чтобы взять слово из руководства, вот несколько тестовых массивов.
$one_array = ['thing', 'another_thing', 'same_thing', 'same_thing'];
$two_arrays = ['A', 'B', 'C', 'thing', 'same_thing'];
$or_more_arrays = ['same_thing', 1, 2, 3];
Пара тестов показывает, что функция работает так, как объявлено:
$try_it = array_unique($one_array);
возвращается ['thing', 'another_thing', 'same_thing'];
$try_it = array_unique($one_array, $two_arrays);
дает вам предупреждение
Предупреждение: array_unique () ожидает, что параметр 2 будет целочисленным, задан массив
и возвращается null
,
$try_it = array_unique($one_array, $two_arrays, $or_more_arrays);
также дает вам предупреждение
Предупреждение: array_unique () ожидает максимум 2 параметра, 3 заданных
и возвращается null
,
Ответ на вторую часть вашего вопроса: ДА.
Чтобы получить уникальные значения с помощью array_unique, вы должны иметь один массив значений. Вы можете сделать это, как прокомментировал u_mulder, используя array_merge
объединить различные входные массивы в один перед использованием array_unique
,
$unique = array_unique(array_merge($one_array, $two_arrays, $or_more_arrays));
возвращается
['thing', 'another_thing', 'same_thing', 'A', 'B', 'C', 1, 2, 3];
Если вместо нескольких отдельных переменных массива у вас есть массив массивов, подобный этому:
$multi_array_example = [
[1, 2, 3],
[2, 3, 4],
[3, 4, 5],
[4, 5, 6]
];
Тогда вы можете использовать array_reduce
с array_merge
объединить их в один массив перед использованием array_unique
,
$unique = array_unique(array_reduce($multi_array_example, 'array_merge', []));
возвращается [1, 2, 3, 4, 5, 6]
По умолчанию, array_unique()
принимает два параметра, array
, типа массив принимает входной массив и второй параметр, sorting
типа int принимает поведение сортировки. Вы можете прочитать больше об этом в Руководство по PHP для array_unique()
.
Но, как предлагает @u_mulder, вы сначала объединяете массив, возможно, во временный массив (вы можете узнать, как это сделать Вот), а затем применить array_unique
к этому временному массиву.