У меня проблемы в 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');
Есть два метода в зависимости от вашей версии PHP:
Ваш подход неверен, вы не можете объединять массивы запятыми, передавать их в функцию и заставлять функцию рассматривать их как отдельные аргументы. Если ты пишешь foo($bar)
есть только один аргумент foo
независимо от того, сколько запятых может быть в $bar
,
То, что вы ищете, это call_user_func_array
, в который вы можете передать массив массивов, которые будут получены функцией в качестве отдельных аргументов. PHP 5.6+ предлагает некоторый синтаксический сахар вокруг этого в форме списки аргументов переменной длины.