2014-06-22 98 views
-1

編輯 我有一個關聯數組:迭代通過while循環關聯數組

$formation_domains_info_array = array(
    'electrotechnique-electronique' => array(
     'title'  => 'ÉLECTROTECHNIQUE - ÉLECTRONIQUE', 
     'flechage' => array(212, 213, 355), 
    ), 
    'informatique-infographie-cao-dao' => array(
     'title'  => 'INFORMATIQUE - INFOGRAPHIE - CAO/DAO', 
     'flechage' => array(217, 218), 
    ), 
    'metiers-du-verre-horlogerie' => array(
     'title'  => 'MÉTIERS DU VERRE - HORLOGERIE', 
     'flechage' => array(215, 224), 
    ) 
); 

我想通過這種方式遍歷:

while ($index < count($fdomains_array)) { 
    echo $formation_domains_info_array[$index++] .'<br/>'; 
    $index++; 
} 

我很驚訝地獲得「Undefined offset 0」作爲錯誤消息。 是不是可以通過PHP中的關聯數組迭代那種方式?

預先感謝您的解釋。

+2

'$ index'是一個數字,你的數組鍵是一個非數字字符串,所以肯定不會工作....使用[foreach()](http://www.php。 net/manual/en/control-structures.foreach.php) –

+0

請輸入完整的迭代示例。 – Danijel

+0

不,你不能用關聯數組來做這件事,因爲在幕後,它基本上使用'$ array [0],$ array [1],$ array [2]'...等等。你需要使用'list'和'each'作爲while語句的參數。然而,這是低效率的,在這種情況下for語句會更好。 – Ohgodwhy

回答

1

有可能重複使用而關聯數組,但只是沒有這樣。您需要利用listeach方法作爲while語句的參數。

while(list($key, $value) = each($formation_domains_info_array)): 
    //do stuff here 
endwhile; 

但是,你最好的選擇,只是一個foreach循環。

foreach($formation_domains_info_array as $idx => $arr): 
    //do stuff here 
endforeach; 
+0

謝謝。那麼這是不可能的。 我編輯了我的問題,因爲我忘記了如何在while循環中實際瀏覽數組。 目的是在遇到某種情況時能夠停止,而不必通過整個陣列。我想我唯一的選擇是foreach結合break語句 –

+0

或者向while循環添加另一個條件 –