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

Code igniterを使用しているようです(いいですね!)

$keyが「name」を取っていることを確認するために次のことを行います

public function index(){foreach($ _SESSION ['cartProducts'] as $ key => $ 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); }
于 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 に答える