2012-11-07 48 views
-1

我想從數據庫動態地將新數組添加到現有數組,但我的循環只添加mysql_fetch_row的最後一行。我認爲它實際上是覆蓋相同的數組。在PHP foreach循環中動態添加數組

PHP代碼

<?php 
$con = require_once('./dbconnect.php'); 

global $con; 
mysql_select_db("packages", $con); 
$packages = mysql_query("SHOW TABLES FROM packages"); 

while($row = mysql_fetch_row($packages)){ 
    $node = array(); 

    foreach($row as $key2 => $value2){ 
     $node[$row[0]] = array("Item1" => "Other dynamic Info here"); 
    } 
} 

print_r($node); 

mysql_close($con); 
?> 

輸出如下:

Array 
(
    [Pack1] => Array 
     (
      [Item1] => Other dynamic Info here 
     ) 

) 

應該輸出:

Array 
(
    [Pack1] => Array 
     (
      [Item1] => Other dynamic Info here 
     ) 

) 
Array 
(
    [Pack2] => Array 
     (
      [Item2] => Other dynamic Info here 
     ) 

) 

我一直試圖讓這個的foreach( )循環現在工作大約一天...什麼我做錯了嗎?

+1

那麼,你每次都在while循環中覆蓋$ node = array()。它將在時間結束後包含單個結果。 –

回答

0

聲明

$node = array(); 

while循環之外。

如果節點數組的索引是不相關的,你可以只使用「添加」符號

foreach($row as $key2 => $value2){ 
    node[] = array("Item1" => "Other dynamic Info here"); 
} 
+0

真棒,工作就像一個魅力! – user616

+0

$ node []沒有值? $ node [counter?] – delive

0

應該

foreach($row as $key2 => $value2){ 
    $node[$key2] = array("Item1" => "Other dynamic Info here"); 
} 
1

嘗試定義while循環外$節點數組:

$node = array(); ## <-- HERE 

while ($row = mysql_fetch_row($packages)) 
{  
    foreach ($row as $key2 => $value2) 
    { 
     $array  = array("Item1" => "Other dynamic Info here"); 
     $key  = $row[0]; 
     $node[$key] = $array; 
    } 
} 

您還可以使用var_dump來調試您的代碼,以便在出現問題時更快地找出問題。

+0

嘗試使用mysqli ..........代替mysql的連接 –

0

您正在通過while循環覆蓋每個循環上的數組,但僅在最後一個循環後輸出一次數組。您的代碼應該像以下(注意的print_r的位置):

<?php 
$con = require_once('./dbconnect.php'); 

global $con; 
mysql_select_db("packages", $con); 
$packages = mysql_query("SHOW TABLES FROM packages"); 

while($row = mysql_fetch_row($packages)){ 
    $node = array(); 

    foreach($row as $key2 => $value2){ 
     $node[$row[0]] = array("Item1" => "Other dynamic Info here"); 
    } 
    print_r($node); 
} 

mysql_close($con); 
?> 

將通過所述while迴路輸出在每個週期陣列。