Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
另一个php数组循环问题_Php_Arrays_Loops_Multidimensional Array - Fatal编程技术网

另一个php数组循环问题

另一个php数组循环问题,php,arrays,loops,multidimensional-array,Php,Arrays,Loops,Multidimensional Array,我一直在为这件事奋斗,好像永远 我有一个数组: $url_array 它包含以下信息: Array ( [ppp] => Array ( [0] => stdClass Object ( [id] => 46660 [entity_id] => 0 [redirect_url] => http://www.google.com [type] => Image

我一直在为这件事奋斗,好像永远

我有一个数组:

$url_array
它包含以下信息:

Array ( 
   [ppp] => Array ( 
      [0] => stdClass Object ( 
         [id] => 46660 
         [entity_id] => 0 
         [redirect_url] => http://www.google.com 
         [type] => Image 
      ) 
      [1] => stdClass Object ( 
         [id] => 52662 
         [entity_id] => 0 
         [pixel_redirect_url] => http://www.yahoo.com 
         [type] => Image 
      ) 
      [2] => stdClass Object ( 
         [id] => 53877 
         [entity_id] => 0 
         [redirect_url] => http://www.msn.com 
         [pixel_type] => Image 
      ) 
   ) 
   [total_count] => 3 
)
我需要遍历它,并对每个变量进行处理。我可以让它工作:

foreach ($piggies_array as $key => $value) {
$id = $value[0]->id;
$redirect_url = $value[0]->redirect_url; }
不出所料,它只是回显了这些变量的第一个值,但无论我尝试什么,我都无法让它循环:

$value->redirect_url;
$value=>redirect_url;

我将非常感谢您的帮助。

这应该可以做到:

foreach ($url_array['ppp'] as $key => $object) {
    echo $object->redirect_url;
}

您需要在数组中循环两次

foreach($piggies as $piggy) {

foreach($piggy as $key=>$value) {

$id = $value->id;
$redirect_url = $value->redirect_url; 

}

}

您的doing$id=$value[0]->id将只对0元素执行stations

你需要上厕所

for($i = 0; $i < count($piggies_array['ppp']); $i++)
{
    $id = $value[$i]->id;
    $redirect_url = $value[$i]->redirect_url;
}   
for($i=0;$iid;
$redirect\u url=$value[$i]->redirect\u url;
}   

通过调用
$value[0]
您的数组包含另一个数组。您只需要第二个数组中的第一个项目。您需要两个循环,不要忘记值可能不是数组:

    foreach ($piggies as $var)
    {
        if (is_array($var))
        {
            foreach ($var as $obj)
            {
                echo $obj->redirect_url;
            }
        }
        else 
        {
            echo $var;
        }
    }

上面的(未测试)将输出每个URL,还将输出第一个数组的总计数项。

您正在迭代数组的第一个维度,该维度只有
“ppp”
元素。检查您的代码,您将看到,当您有3个元素时,实际上您正在请求数组的第一个元素

您需要做的是,迭代到对象数组中(
$url\u array[“ppp”]

当您对实际迭代的内容有疑问时,开始调试的一个好方法是打印每个迭代步骤。如果您使用发布的示例执行此操作,您将看到:

Array( [0] => stdClass [...], [1] => stdClass [...] ... )
这样做:

foreach ($piggies_array as $key => $value) {
    var_dump($value);
}
看看这个,你会自动发现你的问题是什么。因此,将其更改为:

foreach ($piggies_array['ppp'] as $key => $value) {
    var_dump($value);
}
您将得到您想要的结果:

Object ( id: ... )
Object ( id: ... )
Object ( id: ... )
祝你好运

这样循环(假设
$piggies\u array
与您转储的
$url\u array
相同):


请注意,因为“ppp”数组中的某些项目没有属性redirect\u url(第二个项目有一个pixel\u redirect\u url属性)。

您是通过
$url\u数组
还是通过
$url\u数组['ppp']
?最好的解决方案,只有一个循环。谢谢。1个循环对我有效,对于其他帖子,我知道哪里出了问题。
foreach ($piggies_array['ppp'] as $key => $value) {
   $id = $value->id;
   $redirect_url = $value->redirect_url; 
}