制作“;函数自变量”;由PHP中逗号分隔的数组组成


Making "function arguments" consisting of comma separated arrays in PHP

我在PHP中创建由逗号分隔的数组组成的函数参数时遇到问题,例如,我想自动使用array_intersect函数。

函数接受多个用逗号分隔的数组作为函数参数。例如:

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

我在array_intersect函数中有数百个不同的数组要处理(即,我可以一次将5个数组中的3个、4个传递给该函数)。

我的问题是,如何创建一个由逗号分隔的数组组成的函数参数,然后将其传递给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]
);

函数参数是数组逗号数组逗号数组e.t.c。所以我想生成$venGraph[Again_and_Again']=array_incross("把我的内容放在这里")

我一直在阅读这些回复(谢谢!),它们听起来很有希望,但我仍然很愚蠢!顺便说一句,我使用的是PHP版本5.3.10

ps如果我把逗号放在$setarray中,会更容易吗?

$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版本,有两种方法:

  1. 只有在PHP 5.6及更高版本中才能使用的"…"令牌方法
  2. 旧版本PHP的func_num_args()、func_get_arg()和func_get_args(

您的方法是错误的,您不能用逗号连接数组,将它们传递给函数,并使函数将它们视为单独的参数。如果编写foo($bar),那么无论$bar中有多少逗号,都只有一个参数传递给foo

您要查找的是call_user_func_array,您可以向其中传递一个数组数组,该数组将作为单独的参数由函数接收。PHP 5.6+以可变长度参数列表的形式提供了一些语法上的优势。