我在使用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 :(得分: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'];
}
}
?>