2009-08-19 88 views
0
我有一些问题 foreach statement.Though输入到 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。请帮我解决这个问题。

+0

更多信息请问什么语言/平台/等? – 2009-08-19 15:39:16

+0

其在PHP ..... – Sakura 2009-08-19 16:06:18

回答

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']; 
} 
+0

感谢ü如此多的乌拉圭回合帮助 – Sakura 2009-08-19 16:08:15

5

因为不是原始数组的每个元素本身都是一个数组。例如,你有errorCode这是一个整数,从而引发错误。

+0

感谢乌拉圭回合的帮助 – Sakura 2009-08-19 16:15:10

0

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

+0

感谢ü如此多的乌拉圭回合帮助 – Sakura 2009-08-19 16:09:10

0

您有一个数组并非其所有元素都是数组,所以你必须先首先检查每个元素是否为数组,然后获取它。

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