数组foreach问题

时间:2009-08-19 15:37:08

标签: php foreach

我在使用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 个答案:

答案 0 :(得分:5)

因为并非原始数组的每个元素本身都是一个数组。例如,您有errorCode这是一个整数,因此会抛出错误。

答案 1 :(得分:1)

我认为您希望循环$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'];
}

答案 2 :(得分:0)

在您的示例中,顶部数组的每个值也是一个数组。从你的例子来看,它似乎不正确。在执行第二个foreach循环之前,您需要check whether element is an array

答案 3 :(得分:0)

你有一个数组并不是它的所有元素都是数组,所以你首先要检查每个元素是否是一个数组,然后再获取它。

<?php
foreach($res_array as $res)
     {
      if(is_array($res))
       foreach($res as $re)
        {
           echo $re['shortUrl'];
        }
     }
?>