2016-12-30 19 views
1

私はPHPフレームワークCodeIgniterを使用して、すばやいプロジェクトを作成しています。私は私のループ/配列の一つとPHP関連の問題に遭遇しており、私は正しい方向へのプッシュを探しています。PHP - ループ内の配列に項目を追加する

PHPデータベースコール:

public function get_feed_data() 
    { 
      $query = $this->db->query('SELECT c.id, c.name, c.age, c.photoName, c.photoNameSmall, c.panelColor , IFNULL(SUM(t.points), '.MAX_POINTS.') as totalPoints 
            FROM children as c 
            LEFT JOIN behaviorRatings as r 
            ON c.id = r.childID 
            LEFT JOIN behaviorTypes as t 
            ON r.behaviorID = t.behaviorTypeID 
            GROUP BY c.id'); 
      return $query->result(); 
    } 

マイコントローラー:

$feedData = $this->display_model->get_feed_data(); 
    $output = array(); 

    foreach($feedData as $d) 
    { 
     $rating = $this->_current_behavior($d->totalPoints[0]); 
     $d['rating'] = $rating; 
     $output[] = $d; 
    } 

    $response    = array(); 
    $response['timestamp'] = $currentmodif; 
    $response['children'] = $output; 
    echo json_encode($response); 

問題:

データベース呼び出しがなくて、テーブルからデータの複数のレコードを返します。任意の問題。しかし、別の関数で計算された別のキー/値のペアをその配列に追加しようとしています。

アレイで、$ratingの値を持つratingキーを追加しようとしています。

エラーはCannot use object of type stdClass as arrayです。 私は$feedDataarrayであると仮定しましたが、私はこの値を押し込んでいたかもしれませんが、そうではないようです。

どのような考えですか?

+0

変更 '$ dの[ '評価'] = $評価;' 'へ$ d-> rating = $ rating'となります。エラーが示唆しているように、配列 '$ feedData'は実際には別の配列ではなく' stdClass'の束なので、オブジェクトとして使うだけです。幸運にも、 'php'は素晴らしい*言語なので、オブジェクトプロパティを気まぐれに追加することができます。 –

+0

@SBB答えを確認しましたか? – Dekel

答えて

6

あなたの問題は、この構文はオブジェクトの配列アクセスのためである、とないので、おそらく$d変数はstdClass(とないArray)であるため、あなたがそのオブジェクトに$d[..]を使用することができないということです。

オブジェクトのメンバにアクセスするための構文は->次のとおりです。

$d->rating = $rating; 

だからあなたの完全なループは、次のようになります。

foreach($feedData as $d) 
{ 
    $rating = $this->_current_behavior($d->totalPoints[0]); 
    $d->rating = $rating; 
    $output[] = $d; 
} 
関連する問題