Создание & quot; аргументов функции & quot; состоящий из разделенных запятыми массивов в переполнении стека

У меня проблемы в PHP при создании функциональных аргументов, состоящих из массивов, разделенных запятыми, например, я хочу автоматизировать использование array_intersect функция.

Функция принимает несколько массивов, разделенных запятыми, в качестве аргументов функции. Например.:

array_intersect($setarray1, $setarray2, $setarray3, ...)

У меня есть сотни различных массивов для обработки в array_intersect функция (т.е. я могу передать 3, 4 из 5 массивов функции за раз).

У меня вопрос, как мне создать аргумент функции, состоящий из массивов, разделенных запятыми, которые я затем могу передать array_intersect функционировать?

Вот пример некоторых тестовых данных

$setsarray[]=array('all','0'            ,'0&1','0&2','0&3');
$setsarray[]=array('all'    ,'1'        ,'0&1'            ,'1&2','1&3');
$setsarray[]=array('all'        ,'2'          ,'0&2'      ,'1&2'      ,'2&3');
$setsarray[]=array('all'            ,'3'            ,'0&3'      ,'1&3','2&3');

$setnumb=count($setsarray);

Вручную я могу сделать это …

$vennGraph['all']=array_intersect(
$setsarray[$setnumb-4],$setsarray[$setnumb-3], $setsarray[$setnumb-2]
);

Аргументы функции массив запятая массив запятая массив так далее.
Поэтому я хочу, чтобы генерировать $ vennGraph [‘Again_and_Again’] = array_intersect («разместить мой контент здесь»);

Я читал ответы (спасибо!), И они звучат многообещающе, но я все еще ошеломлен! Кстати, я использую PHP версии 5.3.10

PS Было бы проще, если бы я поставил запятые в $ setsarray, как показано ниже?

$setsarray[]=array('all','0'            ,'0&1','0&2','0&3');
$setsarray[]= ',';
$setsarray[]=array('all'    ,'1'        ,'0&1'            ,'1&2','1&3');
$setsarray[]= ',';
$setsarray[]=array('all'        ,'2'          ,'0&2'      ,'1&2'      ,'2&3');
$setsarray[]= ',';
$setsarray[]=array('all'            ,'3'            ,'0&3'      ,'1&3','2&3');

1

Решение

Есть два метода в зависимости от вашей версии PHP:

  1. Метод токена «…» что возможно только в PHP 5.6 и позже
  2. Функции func_num_args (), func_get_arg () и func_get_args () для старых версий PHP
1

Другие решения

Ваш подход неверен, вы не можете объединять массивы запятыми, передавать их в функцию и заставлять функцию рассматривать их как отдельные аргументы. Если ты пишешь foo($bar)есть только один аргумент fooнезависимо от того, сколько запятых может быть в $bar,

То, что вы ищете, это call_user_func_array, в который вы можете передать массив массивов, которые будут получены функцией в качестве отдельных аргументов. PHP 5.6+ предлагает некоторый синтаксический сахар вокруг этого в форме списки аргументов переменной длины.

0

По вопросам рекламы [email protected]