2012-04-20 91 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 
)