2013-09-18 3 views
1

print_r($p->attachments) производит:PHP - Undefined смещение: 0

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.

Edit:

Как было предложено, вот ответ от var_dump ($ p-> вложения)

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) { 
    } 
    } 
} 
+0

Используйте '@print_r ($ p-> вложения [0] -> URL)' – DontVoteMeDown

+1

Try var_dump () объект - значение не может быть установлено –

+5

@DontVoteMeDown Я бы мог, если бы мог. Это решает проблему, а не решает ее. –

ответ

8

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

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

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

$array = $array + array(null); 

Таким образом, если оригинал $ массив [0] был установлен, теперь нулевой

0

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

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

if (count($p->attachments) > 0){ 
    foreach ($p->attachments AS $att){ 
    //do the stuff if attachement 
    } 
} 
Смежные вопросы