2014-07-23 174 views
0

我已經看過搜索,但有太多不同措辭的問題,我不知道我應該找的。我也不會想到如何將這一點盡我所能,但這裏有:PHP陣列到陣列

我想採取mysqli_fetch_assoc()結果併爲每行創建一個數組。

比方說,結果有兩行:

[0][0] = Cheese 
[0][1] = 1 
[1][0] = Milk 
[1][1] = 2 

我怎麼能丟棄這些到一個新創建陣列比方說叫$items

就是我希望實現的是:

$items = array(
    array("Cheese",1), 
    array("Milk", 2) 
); 

我到目前爲止唯一的代碼是這樣的:

if($row = mysqli_fetch_assoc($q)) { 
    for($i=0;$i<$total;$i++) { 
     $items[$i][] = $row[$i]; 
    } 
} 

我沒有試過,但我有這非常令人不安的感覺它絕對不會工作。

+1

你永遠不會知道,直到你嘗試。然後看看'array_push()'http://php.net/manual/en/function.array-push.php –

+1

嘗試一下,然後解釋它爲什麼不起作用(如果沒有)。沒有人問我們什麼時候你可以自己試試... – BenM

+0

「*我沒有嘗試過這個,但是我有這種非常令人不安的感覺,它肯定不會工作。*」爲什麼不嘗試它,看看你得到什麼錯誤特別是,如果有的話? – esqew

回答

0

難道這不行嗎?

if($row = mysqli_fetch_assoc($q)) { 
    foreach($row as $r) { 
     $items[] = $r; 
    } 
} 
+0

沒有想到,並且正在添加幾行來測試這個工作是否可以返回一些結果。抱歉的傢伙,應該在測試之前測試過! >< –

0
$new_arr = array(); 
while ($row = mysql_fetch_assoc($q)) 
{ 
    foreach($row as $value){ 
     $new_arr[][$value[0]] = $value[1]; 
    } 
} 
0

我想這是你所需要的

while ($row = mysql_fetch_assoc($q)) 
{ 
    $arr = []; 
    foreach ($row as $value) 
     $arr[] = $value; 
    $items[] = $arr; 
} 
var_dump($items); 
0
mysqli_result::fetch_all()  

「返回關聯或數字陣列拿着結果行的一組」

我想你想太難。二維數組已經是一個包含數組的數組。在你的情況,fetch_all的結果恰恰是包含「每一行」的陣列陣列

如果你不打算存儲整個結果集,那麼你可以這樣做:

$rows[] = Array(); 
while ($row = mysqli_fetch_row() && $someCondition) $rows[] = $row; 

但真的如果可能的話,最好在查詢上加上LIMIT。