2013-07-16 65 views
1

有一個有點問題,在結合陣列...這個工程:問題與call_user_func_array

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

如果我取消了第二個$取消,它仍然有效(並且結合了這兩種)。現在

,如果我說,更改從一個硬編碼的數組從數據庫查詢(我知道MySQL的分機已被淘汰)的數組:

  $u = mysql_query("SELECT `XX` FROM `XX` WHERE `XX` = '".$XX."' AND `XX` = '0'"); 
      $un = mysql_fetch_row($u); 

我運行通過phpmyadmin並查詢作品。因此,當我的mysql_fetch_row後添加$flat = call_user_func_array('array_merge', $un);它將返回一個錯誤:

PHP警告:array_merge()[function.array合併]:參數#1不處於** LOCATION陣列 **

而我似乎無法弄清楚爲什麼...因爲數據庫查詢應該吐出$ un [0],$ un [1]等,正如代碼的工作,不應該嗎?

回答

3

array_merge除了一個或多個數組之外 - 您實際上做的是將array_merge的所有單元格作爲參數傳遞。這看起來像即array_merge('row1', 'row2',...)

所以,你想要的是perhabs這樣的

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

+1你打我,你的解釋是好了很多,然後我的 – Orangepill