在组合数组时遇到一些问题......这有效:
$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]等,正如代码有效,不应该吗?
答案 0 :(得分:3)
array_merge除了一个或多个数组之外 - 你实际做的是将array_merge行的所有单元格作为参数传递。这看起来像array_merge('row1', 'row2',...)
所以你想要的就是这样的东西
$flat = call_user_func_array('array_merge', array($un));