2012-04-20 89 views
0

在從數組獲取輸出時遇到一些問題。我環顧四周,似乎無法找出爲什麼我的數組沒有分配索引到數組的每個部分。我環顧四周,甚至嘗試在數組中添加一個計數器變量,但似乎並沒有創建索引。我對PHP很新,所以任何人都可以給我的幫助將不勝感激。PHP增加多維數組

foreach($dbh->query('SELECT n_productID, t_productName, t_categoryName FROM v_prodcatintersect') as $row) { 
    $prodID=$row["n_productID"]; 
    $prodName=$row["t_productName"]; 
    $prodCategor=$row["t_categoryName"]; 
    $products=array(
     array(
      "prodID" => $prodID, 
      "prodName" => $prodName, 
      "prodCategor" => $prodCategor 
     ), 
    print_r($products); 
} 
for($i = 0, $size = sizeof($products); $i < $size; ++$i){ 
    echo "The product ID is ".$products[$i]["prodID"]; 
    echo " The product name is ".$products[$i]["prodName"]; 
    echo " Product Category ".$products[$i]["prodCategor"]; 
} 

現在從陣列(從print_r的)的輸出爲「陣列([0] =>數組([PRODID] => 1 [個prodName] => iPhone 4 [prodCategor] =>智能手機) )Array([0] => Array([prodID] => 2 [prodName] => Droid 3 [prodCategor] => Smartphones))「。而回聲只打印第二個項目,因爲它們都具有相同的索引。感謝在此創建索引的任何幫助。謝謝。

回答

2

要將新的項目添加到現有陣列,可以使用下面的語法:

$products[] = array(
       'prodID' => $prodID, 
       'prodName' => $prodName, 
       'prodCategor' => $prodCategor); 

這將追加新條目到現有數組的末尾。所以,在foreach循環結尾的$products會給你下面的內容,而不是隻覆蓋$products的內容。這允許您正確地在第二個for循環中通過$ products增加。

array(
    [0] => array(
      [prodID] => 1 
      [prodName] => iPhone 
      [prodCategor] => Smartphones) 
    [1] => array(
      [prodID] => 2 
      [prodName] => Droid 
      [prodCategor] => Smartphones)) 
+0

謝謝!我很欣賞快速反應。 – 2012-04-20 01:31:54

1

嘗試這樣做 - []將增加關鍵指標每次添加一個子陣列到您的多維數組。

$products[] = array(
    "prodID" => $prodID, 
    "prodName" => $prodName, 
    "prodCategor" => $prodCategor 
)