访问数组中的数组数据从控制器传递到codeigniter的视图

时间:2012-10-02 03:04:52

标签: codeigniter foreach

我的控制器中有以下代码。我想打印我的数据的数据..它应该是双重的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

任何帮助人? :(

2 个答案:

答案 0 :(得分:1)

我看到你正在使用Code igniter(很好!)

我会执行以下操作以确保$ key正在使用'name'

  

public function index(){           foreach($ _SESSION ['cartProducts'] as $ key =&gt; $ value){               echo $ key;           }}

然后

  

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);

    }
}


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

答案 1 :(得分:0)

PHP告诉你到底出了什么问题。

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

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

有用的提示要理解 - 你所做的是准等效于:7->name,只要左值(7)不知道如何使用箭头语法。当左值是对象时保留它。不是整数,或者在您的情况下是数组。

评论后更新:

你会得到这样的数据:

<? foreach($row['list'] as $r):?>
<tr>
    <td><?=$r[0]->name;?></td>
</tr>
<? endforeach;?>