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] = > Array ( [prodID] => 2 [prodName] => Droid 3 [prodCategor] => スマートフォン ) )". そして、両方とも同じインデックスを持っているため、エコーは2つのうち2番目のアイテムのみを出力します。ここでインデックスを作成する際の助けに感謝します。ありがとう。

4

2 に答える 2

2

新しい項目を既存の配列に追加するには、次の構文を使用できます。

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

これにより、既存の配列の末尾に新しいエントリが追加されます。したがって、$productsforeach ループの最後に、 の内容を上書きするだけでなく、次のようになります$products。これにより、2 番目の 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 に答える