可能重複:
Reference - What does this symbol mean in PHP?PHP - 與號在foreach循環變量之前
我需要知道爲什麼我們在foreach循環使用符號變量之前
foreach ($wishdets as $wishes => &$wishesarray) {
foreach ($wishesarray as $categories => &$categoriesarray) {
}
}
感謝
可能重複:
Reference - What does this symbol mean in PHP?PHP - 與號在foreach循環變量之前
我需要知道爲什麼我們在foreach循環使用符號變量之前
foreach ($wishdets as $wishes => &$wishesarray) {
foreach ($wishesarray as $categories => &$categoriesarray) {
}
}
感謝
這意味着它通過引用傳遞而不是值... IE對變量的任何操作都會影響原始。這與任何修改不影響原始對象的值不同。
這是問了很多次的計算器。
它是用來在數組的單個實例更改應用到主陣列..
由於:
//現在的變化不會影響陣列$ wishesarray
foreach ($wishesarray as $id => $categoriy) {
$categoriy++;
}
print_r($wishesarray); //It'll same as before..
,但現在改變將在數組$ wishesarray反映也
foreach ($wishesarray as $id => &$categoriy) {
$categoriy++;
}
print_r($wishesarray); //It'll have values all increased by one..
這個例子會告訴你區別
$array = array(1, 2);
foreach ($array as $value) {
$value++;
}
print_r($array); // 1, 2 because we iterated over copy of value
foreach ($array as &$value) {
$value++;
}
print_r($array); // 2, 3 because we iterated over references to actual values of array
退房爲此這裏的PHP文檔:http://pl.php.net/manual/en/control-structures.foreach.php
不將_by reference_語法往往造成像錯誤:「不能創建從字符串偏移/引用」? – 2017-07-19 08:57:46
對於你的問題的代碼,有可能是因爲給予內foreach循環是空的沒有明確的答案。
我用你的代碼是看到,內foreach
遍歷一個參考,而不是常見的方式是什麼。
我建議你把foreach
PHP Manual page的讀,它涵蓋了所有四種情況:
foreach($standard as $each);
foreach($standard as &$each); # this is used in your question
$reference = &$standard;
foreach($reference as $each);
$reference = &$standard;
foreach($reference as &$each); # this is used in your question
要添加,「通過引用」意味着它指的是該變量的相同分配的內存塊被稱爲 – Prof83 2012-01-07 11:27:09
爲反對「按價值」,這意味着變量的副本是由PHP在新的內存塊中創建的。 – Kaii 2012-01-07 11:34:14
有的基準是如何在問題的示例代碼傳遞兩種方式,[I概述了兩個](http://stackoverflow.com/a/8769347/367456)。 – hakre 2012-01-07 11:37:07