【发布时间】:2022-01-14 01:19:00
【问题描述】:
我的数据库有 2 行值:Test2 campaign & premium dove
查看页面
foreach ($estedit as $estrow) {
//print_r($estrow);
echo $estrow->name;
}
上面的代码在底部显示了这两个值,如下图所示,但它显示错误Trying to get property 'name' of non-object。
错误截图:
https://i.stack.imgur.com/g7wtz.png
foreach 循环内的print_r($estrow); 显示以下给定数据:
stdClass Object ( [est_id] => 3 [name] => Test2 campaign ) stdClass Object ( [est_id] => 1 [name] => premium dove ).
以$estrow->name 访问name 字段会显示错误Illegal string offset 'name'。
我究竟做错了什么?
我如何在这里访问name 字段?
控制器
$estedit[] = '';
foreach ($est_id as $item) {
$estedit[] = $this->Report->get_estedit($item);
$estlineedit[] = $this->Report->get_estline_edit($item);
}
$data['estedit'] = $estedit;
$data['estlineedit'] = $estlineedit;
$data['date'] = $date;
$this->load->view('reports/download_report_view', $data);
【问题讨论】:
-
我相信你在
foreach循环中的某个地方重新分配了$estedit -
@Anton No. 我没有
-
@Anton 查看更新问题正文。我已经添加了我的控制器代码部分,从中传递这些数据以查看
-
如果它无法访问它们,那么它首先会显示您所追求的值是没有意义的。 "print_r($estrow); 在 foreach 循环内显示以下给定数据" - 好的,但这并不一定意味着错误来自相同的循环迭代,您在其中得到这个调试输出。
print_r(null)或print_r(false)例如导致绝对没有可见的输出 - 所以如果你在$estedit中有比你想象的更多的项目,其中一个是 null 或 false,那绝对可以解释你所看到的。 -
使用
var_dump而不是print_r,这是一个更好的调试工具。并使用它来检查$estedit包含的内容,而不是试图找出仅在循环内部发生的事情。
标签: php arrays codeigniter codeigniter-3 arrayobject