call_user_func_array问题

时间:2013-07-16 21:34:59

标签: php mysql arrays array-merge

在组合数组时遇到一些问题......这有效:

    $un[0] = array("0:0:0");
    //$un[1] = array("1:1:1");
    $flat = call_user_func_array('array_merge', $un);

如果我取消注释第二个$ un,它仍然有效(并将两者合并)。

现在,如果我说,将其从硬编码数组更改为数据库查询中的数组(我知道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不是 ** LOCATION 中的数组

我似乎无法弄清楚为什么......因为数据库查询应该吐出$ un [0],$ un [1]等,正如代码有效,不应该吗?

1 个答案:

答案 0 :(得分:3)

array_merge除了一个或多个数组之外 - 你实际做的是将array_merge行的所有单元格作为参数传递。这看起来像array_merge('row1', 'row2',...)

所以你想要的就是这样的东西

$flat = call_user_func_array('array_merge', array($un));