1

我的控制器中有以下代码。我想打印我有我的数组的数据。它应该是双 forloop 还是 foreach?

控制器:

public function index()
{
    $in_cart = array();

    if (!isset($_SESSION['cartProducts'])){
        $in_cart['list'] = "No Products";
    }
    else{
        foreach ($_SESSION['cartProducts'] as $key => $value) {
            $in_cart[$key] = $this->shopmod->get_one_data($key);

        }
        $cart['list'] = $in_cart;

    }


    $this->load->vars($cart);
    $data['cart'] = $this->load->view('shop/cart', '',  TRUE);
    $this->load->view('layout/default', $data);
}

看法:

<?php if(is_array($list)): ?>
        <?php foreach($list as  $row):?>
            <tr>
                <td><?=$row->name?></td>
            </tr>

        <?php endforeach ?>
    <?php endif;?>

但我有以下错误: 遇到 PHP 错误严重性:通知消息:尝试获取非对象文件名的属性:shop/cart.php 行号:18

有帮助吗?:(

4

2 回答 2

1

我看到你正在使用代码点火器(很好!)

我会执行以下操作以确保 $key 采用“名称”

公共函数 index() { foreach ($_SESSION['cartProducts'] as $key => $value) { echo $key; } }

然后

公共函数索引() { $in_cart = 数组();

if (!isset($_SESSION['cartProducts'])){
    $in_cart['list'] = "No Products";
}
else{
    foreach ($_SESSION['cartProducts'] as $key => $value) {
        $in_cart[$key] = $this->shopmod->get_one_data($key);

    }
}


$this->load->vars($cart);
$data['cart'] = $this->load->view('shop/cart', '',  TRUE);
$data['list'] = $in_cart;
$this->load->view('layout/default', $data); }
于 2012-10-02T03:23:25.953 回答
0

PHP 准确地告诉你出了什么问题。

当语法专门为对象保留时,您正试图访问数组的name属性。$row->

要访问数组值,请使用方括号和键:<?=$row['name']?>

有助于理解的提示 - 你正在做的是准等价于: 7->name,因为左值 (7) 不知道如何使用箭头语法。它是为左值是对象时保留的。不是整数,也不是在您的情况下是数组。

评论后更新:

你会得到这样的数据:

<? foreach($row['list'] as $r):?>
<tr>
    <td><?=$r[0]->name;?></td>
</tr>
<? endforeach;?>
于 2012-10-02T03:16:15.103 回答