第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

用array_walk函數(shù)返回為什么不改變原來的數(shù)組?

??? $a=array(1,2,3,4,5,6,7,8,9);
?? ?print_r($a);
?? ?echo'<hr>';
?? ?function test1(&$var){

????//$var=$var*3;加上這句原數(shù)組才改變,為什么不能直接返回return $var*3;來改變原數(shù)組?

??? return $var*3;
?? ?}
?? ?$res=array_walk($a,test1);
?? ?print_r($a);??????????????????????????????????????????????????????
還有return $var*3;和return $var*=3;有什么區(qū)別?

正在回答

3 回答

按引用傳遞,$var和$array的項指向的是同一塊內存地址,$var改變了$array的項也會同時改變

1 回復 有任何疑惑可以回復我~

array_walk傳遞的是數(shù)組的引用,所以回調函數(shù)也傳引用就可以改變數(shù)組的值,其實是不用返回值的

0 回復 有任何疑惑可以回復我~

array_walk?這個函數(shù)只不過是在回調函數(shù)中使用了數(shù)組的參數(shù)(key,value)和一個函數(shù),這個函數(shù)的返回值并不會改變數(shù)組的值. ?

寫$var=$var*3會改變是因為 test1中的參數(shù)$var前加了一個&取地址符,所以函數(shù)內部的$var就是指向數(shù)組值的指針,你對$var賦值就會改變數(shù)組的值啦.

return $var*3;和return $var*=3?

前者就是返回了計算結果,對$var并沒有賦值操作?

后者要先做賦值運算在返回,相當于$var=$var*3 ?return $var*3;$var在這個過程中進行了重新賦值,所以最后也會改變數(shù)組的值;


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

用array_walk函數(shù)返回為什么不改變原來的數(shù)組?

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號