проблема массива foreach - PullRequest
       7

проблема массива foreach

0 голосов
/ 19 августа 2009

У меня возникли проблемы с оператором foreach. Хотя входные данные для оператора foreach являются массивом, он говорит

Invalid argument supplied for foreach()

и мой код выглядит так

foreach($res_array as $res)
     {
       foreach($res as $re)
       {
           echo $re['shortUrl'];
       }
     }

и мой массив выглядит так

Array ( [errorCode] => 0 [errorMessage] => [results] => Array ( [http://www.telegraph.co.uk/earth/earthpicturegalleries/5966251/The-weirdest-animals-on-Planet-Earth.html?image=5] => Array ( [hash] => 2qNNV6 [shortUrl] => http://su.pr/2qNNV6 ) ) [statusCode] => OK ) 

Я получаю эту ошибку для второго foreach. Пожалуйста, помогите мне с этой проблемой.

Ответы [ 4 ]

5 голосов
/ 19 августа 2009

Потому что не каждый элемент вашего исходного массива сам по себе является массивом. Например, у вас есть errorCode, которое является целым числом, таким образом, выдает ошибку.

1 голос
/ 19 августа 2009

Я думаю, что вы хотите перебрать $res_array['results'], а не $res_array. Вам также не нужно вкладывать петли foreach.

Похоже, что массив результатов содержит некоторую дополнительную информацию, поэтому вы можете захотеть сделать что-то вроде (не проверено):

$res_array = GetResultsFromSomewhere();

if ($res_array['errorCode']) {
    die("Error {$res_array['errorCode']}: {$res_array['errorMessage']}");
}

foreach ($res_array['results'] as $url => $item) {
    echo $item['shortUrl'];
}
0 голосов
/ 23 марта 2011

У вас есть массив, не все его элементы являются массивами, поэтому сначала вы должны сначала проверить каждый элемент, является ли он массивом, или нет, а затем извлечь его.

<?php
foreach($res_array as $res)
     {
      if(is_array($res))
       foreach($res as $re)
        {
           echo $re['shortUrl'];
        }
     }
?>
0 голосов
/ 19 августа 2009

в вашем примере каждое значение верхнего массива также является массивом. Это не похоже на ваш пример. перед выполнением второго цикла foreach необходимо проверить, является ли элемент массивом .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...