2009-11-16 40 views
0
$arr = array(1, 2, 3, 4); 
foreach ($arr as &$value) { 
    $value = $value * 2; 
} 

foreach (array_expression as $value) 
    statement 
foreach (array_expression as $key => $value) 
    statement 

是否$ key數組的平均索引?

回答

11
$arr = array(1, 2, 3, 4); 

    foreach ($arr as $value) 
     $value = $value * 100; 
    echo implode(' ', $arr); // 1 2 3 4 

    foreach ($arr as &$value) 
     $value = $value * 100; 
    echo implode(' ', $arr); // 100 200 300 400 

明白了嗎?

+0

這是代碼中的一小段代碼,它實際上讓我明白了一段時間內我無法理解的東西。謝謝! – SolidSmile 2009-11-16 20:09:57

0

&告訴PHP使$ value成爲實際數組項的引用,而不是數組項的副本。如果沒有&,您的代碼實際上不會修改數組中的值。

3

你有兩個不同的問題。要回答你的第一個關於&符號(&):

無論何時您看到&傳遞給變量前面,這意味着您將使用實際變量而不是它的副本。以您的示例爲例,$value通常是實際$value的副本,因此對該變量所做的任何更改都不會影響該陣列。但是當你把&放在它的前面時,你正在處理實際的數組數據。

要回答第二個問題,是的,$key是數組的索引,無論是數值型還是關聯型。

0

&允許您更改$value中的值。您可以嘗試不用嘗試。這就是所謂的傳遞參考。

這裏的例子不太適合解釋$key,因爲您顯示的是常規數組而不是關聯數組。這裏有一個更好的例子來說明$key

$a = array(
    "red" => 1, 
    "green" => 2, 
    "blue" => 3, 
    "white" => 17 /* btw, I patent the white pixel! */ 
); 

foreach ($a as $key => $value) { 
    echo "key $key, val $value"; 
} 
相關問題