PHP引用的一個面試題

m53469發表於2021-09-09
$data = array(‘a’, ‘b’, ‘c’);
foreach($data as $key=>$val) {
$val = &$data[$key];
}
?>

問題1:程式執行時,每一次迴圈結束後變數$data的值是什麼?請解釋。
答:第一次迴圈時,把下標為0的成員,引用賦值給變數$val,$val與$data[0]內容相同,
要是其中一個改變,另一個也改變,此時,$data原樣輸出,只是$data[0]變成了引用
輸出結果 a b c
第二次迴圈時,$key的值為1,把$data[1]引用複製給$val.
由於$val與$data[0]也是引用關係,所以這時,$val,$data[0],$data[1]三者值同為’B’
$val不再與$data[0]有關係了,只與$data[1]是引用關係
// b  b  c
第三次迴圈時,$key的值為2,把$data[2]引用複製給$val,
由於$data[1]與$val是引用關係,所以都將改變$data[1]、$val、$data[2]三者值一樣
//b c c
問題2:程式執行完後,變數$data的值是什麼?請解釋。
答:結果為b c c

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2819/viewspace-2804574/,如需轉載,請註明出處,否則將追究法律責任。

相關文章