0

从数组获取输出有一些问题。我环顾四周,似乎无法找出为什么我的数组没有为数组的每个部分分配索引。我环顾四周,甚至尝试向数组的一部分添加一个计数器变量,但这似乎并没有创建索引。我对 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)的输出是“Array ([0] => Array ([prodID] => 1 [prodName] => iPhone 4 [prodCategor] => Smartphones)) Array ([0] = > 阵列([prodID] => 2 [prodName] => Droid 3 [prodCategor] => 智能手机))”。并且回声仅打印两个项目中的第二个项目,因为它们都具有相同的索引。感谢您在此处创建索引的任何帮助。谢谢。

4

2 回答 2

2

要将新项目添加到现有数组,可以使用以下语法:

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

这将在现有数组的末尾追加一个新条目。因此,$products在 foreach 循环结束时将为您提供以下内容,而不仅仅是覆盖$products. 这允许您在第二个 for 循环中正确地递增 $products。

array(
  [0] => array(
           [prodID] => 1
           [prodName] => iPhone
           [prodCategor] => Smartphones)
  [1] => array(
           [prodID] => 2
           [prodName] => Droid
           [prodCategor] => Smartphones))
于 2012-04-20T01:27:50.190 回答
1

尝试这样做 - [] 每次将子数组添加到多维数组时都会增加键索引。

$products[] = array(
  "prodID" => $prodID,
  "prodName" => $prodName,
  "prodCategor" => $prodCategor
)
于 2012-04-20T01:30:04.680 回答