在组合数组时有点问题…这很有效:
$un[0] = array("0:0:0");
//$un[1] = array("1:1:1");
$flat = call_user_func_array('array_merge', $un);
如果我取消注释第二个$un,它仍然有效(并将两者结合起来)。
现在,如果我说,把它从一个硬编码数组改成一个来自DB查询的数组(我知道mysql ext已经被弃用了):
$u = mysql_query("SELECT `XX` FROM `XX` WHERE `XX` = '".$XX."' AND `XX` = '0'");
$un = mysql_fetch_row($u);
我通过PhpMyAdmin运行查询,它可以工作。因此,当我在
$flat = call_user_func_array('array_merge', $un);
之后添加mysql_fetch_row
时,它将返回一个错误:PHP警告:array嫒merge()[function.array merge]:参数1不是位于**位置的数组**
我似乎不明白为什么…因为DB查询应该像代码一样输出$un[0],$un[1]等,不是吗?
最佳答案
array_merge不包括一个或多个数组-实际上您要做的是将array_merge行的所有单元格作为参数传递。这看起来就像array_merge('row1', 'row2',...)
所以你想要的是贝哈布这种东西
$flat = call_user_func_array('array_merge', array($un));
关于php - 与call_user_func_array有关的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17687420/