以下数组包含重复和非重复数据。
$arr = array();
//non repeating data
$data = new StdClass();
$data->name = $name;
$data->url = $url;
$arr[] = $data;
//repeating data
foreach($records as $rec) {
$data = new StdClass();
$data->text = $rec->text;
$data->time = $rec->time;
$arr[] = $data;
}
现在我想检索数组的数据,所以我正在尝试这个:
echo $arr[0]->name;
echo $arr[0]->url;
foreach ($arr as $rec) {
echo $rec->text;
echo $rec->time;
}
我收到以下通知:
Notice: Undefined property: stdClass::$text in xx.php on line 48
第48行是echo $rec->text;
如何修复此通知而不是隐藏它?
答案 0 :(得分:4)
数组中的第一个对象有name
和url
,其余对象有text
和time
。
您在第一个对象上获得Undefined property: stdClass::$text
,因为它没有该属性。
答案 1 :(得分:0)
这只是因为你的静态数据对象没有文本和时间字段,你可以通过这个简单的检查解决这个问题:
foreach ($arr as $rec) {
if(isset($rec->text))
echo $rec->text;
if(isset($rec->time))
echo $rec->time;
}
答案 2 :(得分:0)
除了cornelb的答案,你应该像下面的代码那样做
$arr = array();
foreach($records as $rec) {
$data = new StdClass();
$data->text = $rec->text;
$data->time = $rec->time;
$data->name = $name;
$data->url = $url;
$arr[] = $data;
}
或者您可以从数组的第一个索引开始打印值
for ($i=1; $i < count($rec); $i++) {
echo $rec[$i]->text;
echo $rec[$i]->time;
}