@spiritus-x

Как в array_intersect перечислить много массивов?

Здравствуйте. Попробую описать проблему с которой я столкнулся и мучаюсь уже не первый день. Помогите, пожалуйста, кто может.
Мне нужно много раз сравнивать по несколько массивов. Количество массивов каждый раз разное (от 2-х до 15). Очень не удобно каждый раз при вызове функции array_intersect в скобках прописывать количество массивов вручную. Имена массивов имеют такой вид:
"$names[0], $names[1], $names[2], $names[3], $names[4]... "
С помощью кода я могу автоматом составлять список этих массивов. Типа так:
$all_arrays = '$names[0], $names[1], $names[2], $names[3], $names[4], $names[5]';
Но как их прописать в скобках после функции array_intersect ? Если вставить их вот так:
$intersect = array_intersect($all_arrays) - выдает ошибку.
Мне понятно почему выдает ошибку, но как сделать правильно? Как задавать в скобках функции разное количество массивов? Я уже и через echo пытался (знаю что это тупо, но я пытался). Пытался совсем по-другому: через цикл сравнивать по два массива за один цикл, но и тут возникла проблема.
Я не очень разбираюсь в программировании на PHP, но очень нужно решить данную проблему.
Извините за тупость если что. Заранее спасибо за помощь.
  • Вопрос задан
  • 491 просмотр
Решения вопроса 1
0xD34F
@0xD34F
array_intersect(...$arrays)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
php.net/manual/en/function.array-intersect.php

array_intersect($array1, $array2, $array3);

php.net/manual/ru/function.call-user-func-array.php

$wrkArray = array( $userArray1,
                   $userArray2,
                   $userArray3
                 );
$result = call_user_func_array('array_intersect',$wrkArray);


т.е. в вашем случае
$result = call_user_func_array('array_intersect', $names);
Ответ написан
serginhold
@serginhold
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы