2012-06-07 51 views
2

這是從PHP DOC)的工作示例代碼使用列表(每()PHP。使用list()和each()?

<?php 

$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry'); 

reset($fruit); 
while (list($key, $val) = each($fruit)) { 
    echo "$key => $val\n"; 
} 
?> 

輸出是

a => apple 
b => banana 
c => cranberry 

我不明白爲什麼它的工作原理和輸出的方式。因爲,

API of each(),它說每個()返回一個數組與鍵/值對。 所以each($fruit)應該是這樣的:

Array 
(
    [1] => yy 
    [value] => yy 
    [0] => xx 
    [key] => xx 
) 

的代碼:

while (list($key, $val) = each($fruit)) { 
     echo "$key => $val\n"; 
    } 

不應該$key等於each($fruit)[1],並$val等於each($fruit)[value]

+0

'foreach'是您選擇的工具! –

+0

在foreach中,PHP遍歷數組的副本而不是實際的數組。相反,當使用each()和for時,PHP會迭代原始數組。 – gilzero

+0

那麼,那有什麼問題? –

回答

3

注:

list()僅適用於數字數組並假定數字索引從0

http://php.net/list

換句話說開始,list積極爲了尋找數字鍵。 list($foo, $bar)要求分配的陣列具有密鑰01,並將其分別分配給$foo$bar。這些鍵在數組本身中的順序並不重要。

+0

很棒。感謝。 – gilzero