2011-01-07 166 views
3

一直在与这个看起来像永远一样的对手。另一个php数组循环问题

我有一个数组:

$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; 

我会感谢任何帮助。

+0

你通过'$ url_array'或通过'$ url_array循环[“PPP”]'? –

回答

8

这应该做的伎俩:

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

最好的解决办法,只有一个循环。 – cocacola09

+0

感谢。1环为我工作,并与其他职位我明白我出错的地方。 – Dan

1

您需要遍历数组的两倍。

foreach($piggies as $piggy) { 

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

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

} 

} 
0

你做的$ id = $值[0] - > ID将只为0元做statments

你需要一个用于厕所

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

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

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

上面(未测试)将输出每个URL,也将输出的第一阵列的总数项。

0

您正在遍历数组的第一维,其中只有"ppp"元素。检查你的代码,当你有3个元素时,你会发现你实际上正在请求数组的第一个元素。

你要做的是迭代到对象数组($url_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: ...) 

祝你好运!

0

循环像这样(假设$piggies_array$url_array你甩相同):

foreach ($piggies_array['ppp'] as $key => $value) { 
    $id = $value->id; 
    $redirect_url = $value->redirect_url; 
} 

,并要当心,因为一些“PPP”数组中的项目将不会有一个属性REDIRECT_URL(HTE第二个有pixel_redirect_url属性。