使用 foreach 访问多维数组(存储在 $_SESSION 中).发出警告


Accessing a multidimensional array (that is stored in $_SESSION) using foreach. gives warning

我有一个多维数组 $_SESSION("cart"),当我递归打印它时,它给出:

array
[0] => Array
    (
        [type] => Side orders
        [name] => French Fries
        [choice] => small
        [quantity] => 1
        [price] => 225
    )
[1] => Array
    (
        [type] => Specialty Pizzas
        [name] => Vegetarian
        [choice] => large
        [quantity] => 1
        [price] => 1580
    )
[2] => Array
    (
        [type] => Specialty Pizzas
        [name] => Mediterranean
        [choice] => large
        [quantity] => 1
        [price] => 1580
    )

)我正在尝试通过循环遍历数组数组(键:1,2,3...)来打印购物车,并可以直接访问[类型,名称,选择...]但是当我尝试使用以下代码访问它时:

if (isset($_SESSION["cart"]) && count($_SESSION["cart"])>0)
{
            echo '<pre>';
            print_r ($_SESSION["cart"]);
            echo '</pre>';
            foreach ($_SESSION["cart"] as $key->$item){
                $ty = $item->type;
                $nm = $item->name;
                $ch = $item->choice;
                $pr = $item->price;
                $qt = $item->quantity;
                ?>  
                <li>
                    <?= $ty ?>
                    <?= $nm ?>
                    <?= $ch ?>
                    <?= $pr ?>
                    <?= $qt ?>
}}

这将给出警告和致命错误: 警告:尝试在 中分配非对象的属性...在第 15 行(包含 foreach 循环的行)

警告:从 中的空值创建默认对象...14号线致命错误:无法访问 中的空属性...在第 14 行

我尝试在循环之前设置 key=0 并在循环中递增它;并迭代键,但它似乎不是一个有效的解决方案,因为它没有打印值,但致命错误消失了。我不确定出了什么问题。

我的错误报告是
error_reporting(E_ERROR |E_WARNING |E_PARSE);

更改代码:

foreach ($_SESSION["cart"] as $key->$item) {

自:

foreach ($_SESSION["cart"] as $key => $item) {

foreach语句有两种结构:

1. foreach ($array as $value)
2. foreach ($array as $key => $value)

该错误很好地表明了问题。

第一

foreach ($_SESSION["cart"] as $key->$item) {这是不正确的。使用 $key => $item

$item->type; - 这是访问对象(而不是数组)属性的方式。

$item['type']; - 这是你想要的。