PHP – неопределенное смещение: 0

print_r($p->attachments) производит:

 Array ( [0] => stdClass Object ( [id] => ... [url] => http://...png [slug] => ... [title] => ... [description] => ...  => ... [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) { } } } 

Вы можете использовать isset () для проверки массива:

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

Или, если вы знаете, что вы будете только проверять индекс 0, тогда вы можете сделать это

 $array = $array + array(null); 

Так что если исходный $ array [0] был отменен, теперь он равен нулю

dunno, почему он возвращает вам значение и сообщает вам, что существует неопределенное смещение 0. странно.

вы можете проверить это (поскольку вложения – это массив, который вы должны сделать таким образом):

 if ( count($p->attachments) > 0 ){ foreach ($p->attachments AS $att){ //do the stuff if attachement } }