0

ファイルから$_SESSION['products']配列にデータを入力します。

$myFile = '.\products.txt';
$handle = fopen($myFile, 'r');

while (!feof($handle))
{
    $prod = explode('|', fgets($handle));

    $_SESSION['products'] = array($prod[4] => array(
            'name' => $prod[0],
            'price' => $prod[1],
            'description' => $prod[2],
            'image' => $prod[3]));
}

次に、それをループして、すべての名前と価格を印刷します。

foreach ($_SESSION['products'] as $prodID=>$value) {
  echo $_SESSION['products'][$value]['name'];
  echo $_SESSION['products'][$value]['price'];
}

しかし、それはうまくいかないようです!

4

3 に答える 3

4

foreachがどのように機能するかをもう一度確認する必要があります。あなたの場合、あなたは単に以下を行うことができます:

foreach($_SESSION['products'] as $value) {
    echo $value['name'];
    echo $value['price'];
}
于 2012-10-10T07:49:58.923 に答える
3

問題は、ここではすべての製品で製品配列を上書きしていることです。つまり、最後の製品のみが存在することになります。

    $_SESSION['products'] = array($prod[4] => array(

次のように配列に追加してみてください。

$_SESSION['products'][$prod[4]] = array(
//                    ^^^^^^^^ set the key as the product ID here
        'name' => $prod[0],
        'price' => $prod[1],
        'description' => $prod[2],
        'image' => $prod[3]);

また、あなたのforeachが間違っています、試してみてください

foreach ($_SESSION['products'] as $prodID=>$value) {
  echo $value['name'];
  echo $value['price'];
}
于 2012-10-10T07:56:40.747 に答える
0
foreach ($_SESSION['products'] as $prodID=>$value) {
    echo $_SESSION['products'][$prodID]['name'];
    echo $_SESSION['products'][$prodID]['price'];
}
于 2012-10-10T07:48:45.330 に答える