对不起,令人困惑的标题...call_user_func_array + array_intersect与一个数组名称的数组,可能吗?
我需要对可变数目的数组执行array_intersect()
。要做到这一点,看来我需要使用call_user_func_array()
功能,但是,这似乎并没有被工作,给我的错误:
Warning: array_intersect() [function.array-intersect]: Argument #1 is not an array in...
但是,如果我“的print_r”的阵列,以确保那我看到,它是一个数组:
Array ([0] => arr_0 [1] => arr_1)
我的代码(修剪以只显示碎部分):
$i = 0;
$arr_results = array();
foreach($arr_words as $word) {
$arrayname = "arr_".$i;
$$arrayname = array();
while ($row = mysql_fetch_assoc($search)) {
array_push($$arrayname, $row['id']);
}
array_push($arr_results, "$arrayname");
$i++
}
$matches = call_user_func_array('array_intersect',$arr_results);
在全码我与获得的数据来填充所述阵列中foreach循环FR om sql查询。
'“$ arrayname”'是一个字符串,而不是一个数组。 'call_user_func_array'会将'$ arr_results'中的每个元素作为参数传递给'array_intersect'。 'array_intersect'需要数组作为参数,但'$ arr_results'中的每个项都是一个字符串,而不是一个数组。 – 2012-02-26 19:14:00
我拿$ arrayname并把它变成一个数组,我刚刚更新了代码片段以显示这一点。 – 2012-02-26 19:15:52
如果这是真的,'print_r'会显示一个嵌套数组作为输出,但它显示一个字符串数组。为什么认为'“$ arrayname”'成为一个数组?哪里? *编辑:*'array_push($ arr_results,“$ arrayname”);'向数组添加一个字符串。 PHP不评估字符串。现在并不是'$ arrayname'中的值引用变量名称。为什么不从一开始就创建一个数组数组?这比变量变量更容易处理。 – 2012-02-26 19:17:23