1

我在 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]
);

函数参数是数组逗号数组逗号数组等所以我想生成$vennGraph['Again_and_Again']=array_intersect("put my content here");

我一直在阅读回复(谢谢!)他们听起来很有希望,但我还是傻眼了!顺便说一句,我使用的是 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');
4

2 回答 2

1

根据您的 PHP 版本,有两种方法:

  1. "..." 标记方法,仅在 PHP 5.6 及更高版本中可用
  2. 用于旧版本 PHP 的func_num_args()、func_get_arg() 和 func_get_args() 函数
于 2015-03-19T07:05:39.667 回答
0

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

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

于 2015-03-19T07:20:46.857 回答