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 } }