1.以下哪一句不會(huì)把 John 新增到 users 陣列?
$users[] = 'john';
成功把 John 新增到陣列 users。
array_add($users,’john’);
函式 array_add() 無(wú)定義。
array_push($users,‘john’);
成功把 John 新增到陣列 users。
$users ||= 'john';
語(yǔ)法錯(cuò)誤。
2.sort()、assort()、和 ksort() 有什么分別?它們分別在什么情況下使用?
sort()
根據(jù)陣列中元素的值,以英文字母順序排序,索引鍵會(huì)由 0 到 n-1 重新編號(hào)。主要是當(dāng)陣列索引鍵的值無(wú)關(guān)疼癢時(shí)用來(lái)把陣列排序。
assort()
PHP 沒(méi)有 assort() 函式,所以可能是 asort() 的筆誤。
asort()
與 sort() 一樣把陣列的元素按英文字母順序來(lái)排列,不同的是所有索引鍵都獲得保留,特別適合替聯(lián)想陣列排序。
ksort()
根據(jù)陣列中索引鍵的值,以英文字母順序排序,特別適合用于希望把索引鍵排序的聯(lián)想陣列。
3.以下的代碼會(huì)產(chǎn)生什么?為什么?
$num =10;
function multiply(){
$num =$num *10;
}
multiply();
echo $num;
由于函式 multiply() 沒(méi)有指定 $num 為全域變量(例如 global $num 或者 $_GLOBALS['num']),所以 $num 的值是 10。
4. reference 跟一個(gè)正規(guī)的變量有什么分別?如何 pass by reference?在什么情況下我們需要這樣做?
Reference 傳送的是變量的地址而非它的值,所以在函式中改變一個(gè)變量的值時(shí),整個(gè)應(yīng)用都見(jiàn)到這個(gè)變量的新值。
一個(gè)正規(guī)變量傳送給函式的是它的值,當(dāng)函式改變這個(gè)變量的值時(shí),只有這個(gè)函式才見(jiàn)到新值,應(yīng)用的其他部分仍然見(jiàn)到舊值。
$myVariable = "its' value";
Myfunction(&$myVariable); // 以 reference 傳送參數(shù)以 reference 傳送參數(shù)給函式,可以使函式改變了的變量,即使在函式結(jié)束后仍然保留新值。
5.些函式可以用來(lái)在現(xiàn)正執(zhí)行的腳本中插入函式庫(kù)?
對(duì)這道題目不同的理解會(huì)有不同的答案,我的第一個(gè)想法是插入 PHP 函式庫(kù)不外乎 include()、include_once()、require()、require_once(),但細(xì)心再想,“函式庫(kù)”也應(yīng)該包括 com 物件和 .net 函式庫(kù),所以我們的答案也要分別包括 com_load 和 dotnet_load,下次有人提起“函式庫(kù)”的時(shí)候,別忘記這兩個(gè)函式。
6.foo() 與 @foo() 有什么分別?
foo() 會(huì)執(zhí)行這個(gè)函式,任何解譯錯(cuò)誤、語(yǔ)法錯(cuò)誤、執(zhí)行錯(cuò)誤都會(huì)在頁(yè)面上顯示出來(lái)。
@foo() 在執(zhí)行這個(gè)函式時(shí),會(huì)隱藏所有上述的錯(cuò)誤訊息。
很多應(yīng)用程式都使用 @mysql_connect() 和 @mysql_query 來(lái)隱藏 mysql 的錯(cuò)誤訊息,我認(rèn)為這是很?chē)?yán)重的失誤,因?yàn)殄e(cuò)誤不該被隱藏,你必須妥善處理它們,可能的話(huà)解決它們。