在组合数组时有点问题…这很有效:

    $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/

10-11 12:41