面試-PHP篇-傳值和傳引用

傳值:在php中傳值的意思相當於複製,我將你的值複製給我,我可以隨意改變複製之後的值,對你是不會產生影響的。

  function test1()
 {
  $a = 1;
  $b = $a;
  echo $b.'<br>'; //1
  $b = 2;
  echo $a .'<br>'.$b;   //1   2
 }
// 解釋:將a的值賦給b,改變b的值,a的值不受影響。

傳引用:在php中傳引用用‘&’符號,是相當於我不僅將你的值賦給我,還將你的內存地址也複製過來了,那麼我們兩個任何一個改變,另外一個就跟着改變。

function test2()
 {
  $a = 1;
  $b = &$a;
  echo $b.'<br>'; //1
  $b = 2;
  echo $a .'<br>'.$b;   //2   2
 }
// 解釋:將a的值和內存地址賦給b,改變b的值,a的值也改變。

然後我們來看一下這道面試題:

$a = 1;
$b = &$a;
unset($a);
echo $b; //??

 unset並沒有真正銷燬變量的作用,僅是切斷了變量與內存之間的關係,內存只要還被引用着就不會被釋放; $b和$a同時指向1,切斷其中$a的關係,$b還是指向1,所以上題不報錯,照樣輸出1。

另外補充一點: 在PHP中對象的傳值默認是引用傳值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章