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我可以把这个值推进去,但似乎并非如此.
有什么想法吗?
您的问题是可能$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)
| 归档时间: |
|
| 查看次数: |
703 次 |
| 最近记录: |