2011-01-07 108 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屬性。