我正在使用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
,我可以把这个值推进去,但似乎并非如此。
有什么想法吗?
答案 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;
}