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

您的问题是,在这里您将使用每个产品覆盖 products 数组,这意味着只会出现最后一个产品:

    $_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 回答