PHP未定义的属性通知

时间:2014-02-27 11:40:29

标签: php

以下数组包含重复和非重复数据。

$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;

如何修复此通知而不是隐藏它?

3 个答案:

答案 0 :(得分:4)

数组中的第一个对象有nameurl,其余对象有texttime

您在第一个对象上获得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;
}