5

print_r($p->attachments)产生:

Array
(
    [0] => stdClass Object
        (
            [id] => ...
            [url] => http://...png
            [slug] => ...
            [title] => ...
            [description] => ...
            [caption] => ...
            [parent] => ...
            [mime_type] => image/png
            [images] => ...
                (
                )
        )
)

我希望访问url字段中的值

print_r($p->attachments[0]->url)检索 url,但也会产生:Undefined offset: 0

现在我可以通过调用来抑制错误print_r(@$p->attachments[0]->url),但是有没有解决这个问题的正确方法?

我无法修改 $p 对象。

编辑:

如建议的那样,这是来自 Var_dump($p->attachments) 的响应

 array(1) {
  [0]=>
  object(stdClass)#322 (9) {
    ["id"]=>
    int(1814)
    ["url"]=>
    string(76) "..."
    ["slug"]=>
    string(34) "..."
    ["title"]=>
    string(34) "..."
    ["description"]=>
    string(0) ""
    ["caption"]=>
    string(53) "..."
    ["parent"]=>
    int(1811)
    ["mime_type"]=>
    string(9) "image/png"
    ["images"]=>
    array(0) {
    }
  }
}
4

2 回答 2

15

您可以使用 isset() 检查数组:

if(isset($p->attachments[0])){
    echo $p->attachments[0]->url;
}
else {
  //some error?
}

或者,如果您知道您只会检查索引 0,那么您可以这样做

$array = $array + array(null);

因此,如果原始 $array[0] 未设置,则现在为 null

于 2013-09-18T19:28:13.690 回答
0

不知道为什么它会返回一个值并通知您存在未定义的偏移量 0。奇怪。

你能检查一下吗(因为附件是一个数组,你应该这样做):

if ( count($p->attachments) > 0 ){ 
   foreach ($p->attachments AS $att){
    //do the stuff if attachement 
   }
}
于 2013-09-18T19:42:04.730 回答