$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數組的平均索引?
$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數組的平均索引?
&$variable_name
是PHP的引用做通的方式:
參見:http://php.net/manual/en/language.references.pass.php
詳細的交代什麼的參考,請參閱:
$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
明白了嗎?
&告訴PHP使$ value成爲實際數組項的引用,而不是數組項的副本。如果沒有&,您的代碼實際上不會修改數組中的值。
你有兩個不同的問題。要回答你的第一個關於&符號(&
):
無論何時您看到&
傳遞給變量前面,這意味着您將使用實際變量而不是它的副本。以您的示例爲例,$value
通常是實際$value
的副本,因此對該變量所做的任何更改都不會影響該陣列。但是當你把&
放在它的前面時,你正在處理實際的數組數據。
要回答第二個問題,是的,$key
是數組的索引,無論是數值型還是關聯型。
&
允許您更改$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";
}
這是代碼中的一小段代碼,它實際上讓我明白了一段時間內我無法理解的東西。謝謝! – SolidSmile 2009-11-16 20:09:57