【问题标题】:Printing a nested array on View | Codeigniter在 View 上打印嵌套数组 |代码点火器
【发布时间】:2020-11-04 22:10:29
【问题描述】:

我正在使用会话构建一个购物车,我将每个比萨饼添加到一个数组中并传递给会话。数组如下,

  [cart_items] => Array
        (
            [0] => Array
                (
                    [item_id] => 3
                    [item_name] => New York-Style Pizza
                    [price] => 800.00
                    [toppings] => Array
                        (
                            [0] => Array
                                (
                                    [id] => 1
                                    [name] => Mozarella Cheese 
                                    [price] => 150.00
                                )

                            [1] => Array
                                (
                                    [id] => 7
                                    [name] => Chicken Bacon 
                                    [price] => 250.00
                                )

                        )

                    [toppings_price] => 0
                    [quantity] => 1
                    [price_per_item] => 800
                )

        )

我能够显示商品 ID、披萨名称、价格和数量,但无法显示用户在“浇头”列中选择的浇头名称。我该怎么做>

查看

以下代码显示了我从数组中获取值的方式,

<?php $list = $this->session->userdata('cart_items');
        if($list==Null) {
            print_r("There are no items in the your cart");
        }else{
            foreach ($list as $item=>$value){

                echo "<li class='list-group-item d-flex justify-content-between lh-condensed'>";
                print_r("<div>".$value['item_id']."</div>");
                print_r("<div>".$value['item_name']."</div>");
                print_r("<div>".$value['price']."</div>");
                $toppings_names=array($value['toppings']);
                foreach ($toppings_names as $name=>$val){
                print_r("<div>");
                print_r($val['name']);
                print_r("</div>");
                }
                print_r("<div>".$value['quantity']."</div>");
                echo "</li>";
            }
        }
        ?>

输出

我期待的输出如下

商品 ID |商品名称|价格|浇头(所选浇头名称)|数量

列表未显示我收到错误“未定义的索引:名称”。

【问题讨论】:

  • 你的问题解决了吗?
  • @KUMAR 我解决了这个问题,谢谢。

标签: php session codeigniter-3


【解决方案1】:

您必须对 topping 进行循环,因为它也是数组,因此您可以检查其中的每个项目。

 <?php

$list = $this->session->userdata('cart_items');    //Array
if ($list == null) {
    print_r("There are no items in the your cart");
} else {
    foreach ($list as $item => $value) {
        echo "<li class='list-group-item d-flex justify-content-between lh-condensed'>";
        print_r("<div>".$value['item_id']."</div>");
        print_r("<div>".$value['item_name']."</div>");
        print_r("<div>".$value['price']."</div>");

        // toppings array is empty (nothing selected)
        if ($value['toppings'] == null) {
            print_r("<div>There is no toppings selected</div>");
        } else {
            foreach ($value['toppings'] as $val) {
                // here you can access indexes id, name, price in toppings array
                print_r("<div>");
                print_r($val['name']);
                print_r("</div>");
            }
        }
        
        print_r("<div>".$value['quantity']."</div>");
        echo "</li>";
    }
}

?>

【讨论】:

  • @Natasha Bharathi 如果这对您有用,请标记为已接受的答案。
  • @NatashaBharathi 没问题,如果这个答案解决了您的问题,请将其作为解决方案接受
【解决方案2】:

你可以在没有变量的情况下做foreach

if (!empty($value['toppings'])) {
    foreach ($value['toppings'] as $val) {
        print_r("<div>");
        print_r($val['name']);
        print_r("</div>");
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-05
    • 2021-10-23
    • 2018-07-04
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 2011-09-07
    相关资源
    最近更新 更多