畫江湖之面試篇 [第四篇] tip:有些事情不去親自去經歷~很難明白裡面的道理~程式碼也如此~要多敲

Krisji發表於2019-03-31

第一題:寫出以下程式碼輸出的結果?

這道題呢?主要考察你對PHP的引用的理解

<?php
  $data=array('a','b','c');
  foreach($data as $key=>$value){
       $value=&$data[$key];
  }
問題1:程式執行時,每一次迴圈結束後變數$data的值是什麼?請解釋。
問題2:程式執行完後,變數$data的值是什麼?請解釋。
//第一次遍歷 結果還是 【a,b,c】
//第二次遍歷
$data[0]='a';//第一次遍歷的時候$data[0]=a
$val=&$data[0];//這邊已經把$data[0]引用指向$val 第一次遍歷以後
$val=b //現在$val 一旦變了 那麼$data[0]也就改變了 所以變成$data[0]=b
$data=[b,b,c];//最後結果變成了
//第三次遍歷
$data[1]=b;//第二次遍歷的時候$data[1]變成了b
$val=&$data[1];//第二次遍歷的時候$val的引用變成了$data[1]
$val=c;//所以這邊$val變成了c 那麼$data[1]也就變成了c
$data=['b','c','c']//最後結果變成了
//最後的$data的結果
【b,c,c】

第二題:實現不使用第 3 個變數,交換$a、$b 的值,$a、$b 的初始值自己定

這道題呢?主要考察你對PHP的基礎的理解

$a="linux";//定義$a的變數
$b="php";//定義$b的變數
$b=array($a,$b);//定義一個$b的陣列 並沒有第三個變數哦
$a=$b[1];//把$a變成$b陣列的第二個值 這邊交換了
$b=$b[0];//再把$b變成$b陣列的第一個值 這邊也交換完成了
echo $a;
echo "<br>";
echo $b;
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章