摘要:是指將數組的值給,當我們需要直接操作原數組時,就會添加引用符號,這時接收的是數組值的地址空間。輸出結果異常分析第一個遍歷結束,因為是引用賦值,所以變量和最后一個數組單元是同一個地址空間。
foreach($arr as $key=>$value){}
foreach是指將數組$arr的值copy給$value,當我們需要直接操作原數組時,就會添加引用符號&,這時$value接收的是數組值的地址空間。
$arr = ["a","b","c"]; foreach($arr as $key=>&$value){} foreach($arr as $key=>$value){ echo $value; }
輸出結果: abb
異常分析:
第一個遍歷結束,因為是引用賦值,所以$value變量和最后一個數組單元c是同一個地址空間。
第二個遍歷中,是copy賦值,數組的每個值依次賦值給$value(等同于數組中的元素c)的地址空間,所以
第一次遍歷后$arr = ["a","b","a"] //變量c因為$value被賦值為a,也跟著變為a
第二次遍歷后$arr = ["a","b","b"] //變量c因為$value被賦值為b,也跟著變為b
第三次遍歷后$arr = ["a","b","b"] //這里相當于 $value = $value 自己給自己賦值
看懂這個,可以思考一下 下面循環出現異常的原因:
$arr = array(1,2,3); foreach ($arr as $k => $v){ $v = &$arr[$k]; } var_dump($arr);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22436.html
摘要:這種行為比最初出現的問題更為棘手,同時也是一種常見的錯誤源。這意味著這個數組的一份拷貝將會被返回,因此被調函數與調用者所訪問的數組并不是同樣的數組實例。 showImg(https://segmentfault.com/img/bV7reP?w=620&h=620); PHP 語言讓 WEB 端程序設計變得簡單,這也是它能流行起來的原因。但也是因為它的簡單,PHP 也慢慢發展成一個相對...
摘要:是一個基于的模板引擎。模板中未被定義的變量將被認為是一個字符串。公眾號回復全棧,領取前端,,產品經理,微信小程序,等資源合集大放送。公眾號回復面試,領取面試實戰學習資源。 Velocity是一個基于java的模板引擎(template engine)。它允許任何人僅僅簡單的使用模板語言(template language)來引用由java代碼定義的對象。 當Velocity應用于web...
閱讀 1644·2021-11-24 09:39
閱讀 3083·2021-11-22 15:24
閱讀 3091·2021-10-26 09:51
閱讀 3277·2021-10-19 11:46
閱讀 2891·2019-08-30 15:44
閱讀 2217·2019-08-29 15:30
閱讀 2537·2019-08-29 15:05
閱讀 773·2019-08-29 10:55