PHP - 在循环中将项添加到数组

SBB*_*SBB 1 php arrays codeigniter

我正在使用PHP框架CodeIgniter来组合一个快速项目.我正在使用我的一个循环/数组遇到与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();
    }
Run Code Online (Sandbox Code Playgroud)

我的控制器:

    $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);
Run Code Online (Sandbox Code Playgroud)

问题:

数据库调用从表中返回多个数据记录,没有任何问题.但是,我试图将另一个键/值对添加到通过另一个函数计算的该数组.

在数组中,我试图添加rating值为的键$rating.

我得到的错误是Cannot use object of type stdClass as array.我认为这$feedData是一个array我可以把这个值推进去,但似乎并非如此.

有什么想法吗?

Dek*_*kel 6

您的问题是可能$d变量是stdClass(而不是Array),因此您无法$d[..]在该对象上使用,因为此语法用于数组访问,而不是对象.

访问Object成员的语法是->:

$d->rating = $rating;
Run Code Online (Sandbox Code Playgroud)

所以你的完整循环看起来像:

foreach($feedData as $d)
{
    $rating = $this->_current_behavior($d->totalPoints[0]);
    $d->rating = $rating;
    $output[] = $d;
}
Run Code Online (Sandbox Code Playgroud)