0

Codeigniterで必要なすべての変数を取得し、それらの値をビューに渡すことに頭を悩ませようとしています。

概念は理解していますが、配列を繰り返し処理し、各キーに別の配列を追加することに固執しています。

$ data ['items']配列には、get_all()関数を介してモデルから渡されたデータが含まれています。クエリは基本的に「アイテムから*を選択」です。

各アイテムには複数の機能と写真があります。適切な値を取得するには、アイテムのIDが必要です。これを最初の配列($ data ['items'])から取得して、モデル関数に渡すことができます。

以下のコードでこれを実行しようとすると、さまざまなエラーが発生し続けます。foreachループの前に機能と画像の配列を定義しようとしましたが、それでもエラーが発生します。

私の構文は間違っていると確信しています。どんな助けでも大歓迎です。

$data['items'] = $this->amazon->get_all();
foreach ($data['items'] as $data )
    $id = $data->id;
    $data['features'] = $this->amazon->get_features($id);
    $data['pictures'] = $this->amazon->get_pictures($id);
}

編集

フィードバックに基づいて、コードを次のように更新しました(コードの24〜30行目)。

    $items = $this->amazon->get_all();
    for($i=0; $i<count($items);$i++) {
        $data = $items[$i];
        $id = $data->id;
        $items[$i]['features'] = $this->amazon->get_features($id);
        $items[$i]['pictures'] = $this->amazon->get_pictures($id);
    } 

PHPはこれについて不平を言っています:PHP致命的なエラー:28行目の/var/www/ci/application/controllers/main.phpの配列としてstdClass型のオブジェクトを使用できません

アマゾンモデルの関数は次のとおりです。

function get_all() 
{
    $query = $this->db->get('items');
    return $query->result();
}

function get_pictures($id) {
    $query = $this->db->query("SELECT link FROM pictures WHERE item_id='$id' AND type IN('thumb_set')");
    $style = "border-style:solid; border-width:1px";
    $class = "modal-thumb";
    $results = '';
    foreach ($query->result() as $row) {
        $results .= "<li style='$style' class='$class'><img src='$row->link' alt=''/></li>";
    }
    return $results;
}

function get_features($id) {
    $query = $this->db->query("SELECT content FROM features WHERE item_id='$id' ORDER BY feature_num DESC");
    $results = '';
    foreach ($query->result() as $row) {
        $results .= "<li>";
        $results .= $row->content;
        $results .= "</li>";
    }
    return $results;
}

'results()'の代わりに'results_array()'を使用する必要があると思いますか?私の結果は、現在のように配列ではなくオブジェクトとして返されますか?


4

1 に答える 1

0

あなたが言ったように、foreachステートメントに構文エラーがあります。$data配列を再定義しています。

foreach ($data['items'] as $data )

これを試して:

$items = $this->amazon->get_all();
for($i=0; $i<count($items);$i++){
    $data = $items[$i];
    $id = $data->id;
    $items[$i]['features'] = $this->amazon->get_features($id);
    $items[$i]['pictures'] = $this->amazon->get_pictures($id);
}
于 2012-08-22T01:04:10.157 に答える