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

时间:2016-12-30 01:30:27

标签: php arrays codeigniter

我正在使用PHP框架new_df <- iris[shuffle_columns(names(iris), "Sepal.Width before Sepal.Length")] 来组合一个快速项目。我正在使用我的一个循环/数组遇到与PHP相关的问题,我正在寻找正确方向的推动。

PHP数据库调用:

CodeIgniter

我的控制器:

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$feedData,我可以把这个值推进去,但似乎并非如此。

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

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

访问对象成员的语法是->

$d->rating = $rating;

所以你的完整循环将如下所示:

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