<?php //第2題: $arr = [1,2,3]; foreach($arr as &$v) { //nothing todo. } foreach($arr as $v) { //nothing todo. } var_export($arr); //output:array(0=>1,1=>2,2=>2),你的答案對了嗎?為什么?>
2 回答

心有法竹
TA貢獻1866條經驗 獲得超5個贊
原因就是在第一次遍歷時用的是&val
引用賦值,而在foreach
完之后,這個$val
依然存在,是$arr[2]
元素的引用
當進入到第二次遍歷時,在遍歷到第一個元素時$val
被賦值為1
,相當于
$arr[2] = 1;
遍歷到第二個元素時
$arr[2] = 2;
遍歷到第三個元素時
$arr[2] = $arr[2]
所以最后的結果就成了1,2,2。
添加回答
舉報
0/150
提交
取消