我在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版本,有两种方法:
- 只有在PHP 5.6及更高版本中才能使用的"…"令牌方法
- 旧版本PHP的func_num_args()、func_get_arg()和func_get_args(
您的方法是错误的,您不能用逗号连接数组,将它们传递给函数,并使函数将它们视为单独的参数。如果编写foo($bar)
,那么无论$bar
中有多少逗号,都只有一个参数传递给foo
。
您要查找的是call_user_func_array
,您可以向其中传递一个数组数组,该数组将作为单独的参数由函数接收。PHP 5.6+以可变长度参数列表的形式提供了一些语法上的优势。