php面試題和答案整理

2021-05-14 19:40:26 字數 4486 閱讀 8844

1.以下哪一句不會把 john 新增到 users 陣列?

$users = 『john』;

成功把 john 新增到陣列 users。

array_add($users,』john』);

函式 array_add() 無定義。

array_push($users,『john』);

成功把 john 新增到陣列 users。

$users ||= 『john』;

語法錯誤。

2.sort()、assort()、和 ksort() 有什麼分別?它們分別在什麼情況下使用?

sort()

根據陣列中元素的值,以英文本母順序排序,索引鍵會由 0 到 n-1 重新編號。主要是當陣列索引鍵的值無關疼癢時用來把陣列排序。

assort()

php 沒有 assort() 函式,所以可能是 asort() 的筆誤。

asort()

與 sort() 一樣把陣列的元素按英文本母順序來排列,不同的是所有索引鍵都獲得保留,特別適合替聯想陣列排序。

ksort()

根據陣列中索引鍵的值, 以英文本母順序排序,特別適合用於希望把索引鍵排序的聯想陣列。

3.以下的**會產生什麼?為什麼?

$num =10;

function multiply()

multiply();

echo $num;

由於函式 multiply() 沒有指定 $num 為全域變數(例如 global $num 或者 $_globals['num']),所以 $num 的值是 10。

4. reference 跟乙個正規的變數有什麼分別?如何 pass by reference?在什麼情況下我們需要這樣做?

reference 傳送的是變數的位址而非它的值,所以在函式中改變乙個變數的值時,整個應用都見到這個變數的新值。

乙個正規變數傳送給函式的是它的值,當函式改變這個變數的值時,只有這個函式才見到新值,應用的其他部分仍然見到舊值。

$myvariable = 「its』 value」;myfunction(&$myvariable); // 以 reference 傳送引數

以 reference 傳送引數給函式,可以使函式改變了的變數,即使在函式結束後仍然保留新值。

5.些函式可以用來在現正執行的指令碼中插入函式庫?

對這道題目不同的理解會有不同的答案,我的第乙個想法是插入 php 函式庫不外乎 include()、include_once()、require()、require_once(),但細心再想,「函式庫」也應該包括 com 物件和 .net 函式庫,所以我們的答案也要分別包括 com_load 和 dotnet_load,下次有人提起「函式庫」的時候,別忘記這兩個函式。

6.foo() 與 @foo() 有什麼分別?

foo() 會執行這個函式,任何解譯錯誤、語法錯誤、執行錯誤都會在頁面上顯示出來。

@foo() 在執行這個函式時,會隱藏所有上述的錯誤訊息。

很多應用程式都使用 @mysql_connect() 和 @mysql_query 來隱藏 mysql 的錯誤訊息,我認為這是很嚴重的失誤,因為錯誤不該被隱藏,你必須妥善處理它們,可能的話解決它們。

7.你如何替 php 的應用程式除錯?

我並不常這樣做,我曾經試過很多不同的除錯工具,在 linux 系統中設定這些工具一點也不容易。不過以下我會介紹乙個近來頗受注目的除錯工具。

php – advanced php debugger 或稱 php – apd,第一步是執行以下的指令安裝:

pear install apd安裝後在你的指令碼的開頭位置加入以下的語句開始進行除錯:

apd_set_pprof_trace();執行完畢,開啟以下檔案來查閱執行日誌:

apd.dumpdir

你也可以使用 pprofp 來格式化日誌。

詳細的資料可以參閱

8.「===」 是什麼?試舉乙個「==」是真但「===」是假的例子。

「===」是給既可以送回布林值「假」,也可以送回乙個不是布林值但卻可以賦與「假」值的函式,strpos() 和 strrpos() 便是其中兩個例子。

問題的第二部份有點困難,想乙個「==」是假,但是「===」是真的例子卻很容易,相反的例子卻很少。但我終於找到以下的例子:

if (strpos(「abc」, 「a」) == true)if (strpos(「abc」, 「a」) === true)

9.你會如何定義乙個沒有成員函式或特性的類別 myclass?

class myclass{}

10.你如何產生乙個 myclass 的物件?

$obj = new myclass();

11.在乙個類別內如何訪問這個類別的特性及變改它的值?

使用語句:$this->propertyname,例如:

class myclass}

12.include 和 include_once 有什麼分別?require 又如何?

三者都是用來在指令碼中插入其他檔案,視乎 url_allow_fopen 是否核准,這個檔案可以從系統內部或外部取得。但他們之間也有微細的分別:

include(): 這個函式容許你在指令碼中把同乙個檔案插入多次,若果檔案不存在,它會發出系統警告並繼續執行指令碼。

include_once():它跟 include() 的功能相似,正如它的名字所示,在指令碼的執行期間,有關檔案只會被插入一次。

require():跟 include() 差不多,它也是用來在指令碼中插入其他檔案,但若果檔案不存在,它會發出系統警告,這個警告會引致致命錯誤令指令碼中止執行

13.以下哪乙個函式可以把瀏覽器轉向到另乙個頁面?

redir()

這不是乙個 php 函式,會引致執行錯誤。

header()

這個是正確答案,header() 用來插入捲頭資料,可以用來使瀏覽器轉向到另乙個頁面,例如:

header(「location:

location()

這不是乙個 php 函式,會引致執行錯誤。

redirect()

這不是乙個 php 函式,會引致執行錯誤。

14. 以下哪乙個函式可以用來開啟檔案以便讀/寫?

fget()

這不是乙個 php 函式,會引致執行錯誤。

file_open()

這不是乙個 php 函式,會引致執行錯誤。

fopen()

這是正確答案,fopen() 可以用來開啟檔案以便讀/寫,事實上這個函式還有很多選項,詳細資料請參閱

open_file()

這不是乙個 php 函式,會引致執行錯誤。

15.mysql_fetch_row() 和 mysql_fetch_array() 有什麼分別?

mysql_fetch_row() 把資料庫的一列儲存在乙個以零為基數的陣列中,第一欄在陣列的索引 0,第二欄在索引 1,如此類推。mysql_fetch_assoc() 把資料庫的一列儲存在乙個關聯陣列中,陣列的索引就是欄位名稱,例如我的資料庫查詢送回「first_name」、「last_name」、 「email」三個字段,陣列的索引便是「first_name」、「last_name」和「email」。mysql_fetch_array() 可以同時送回 mysql_fetch_row() 和 mysql_fetch_assoc() 的值。

16.下面的**用來做什麼?請解釋。

$date=』08/26/2003′;print ereg_replace(「([0-9]+)/([0-9]+)/([0-9]+)」,」\\2/\\1/\\3″,$date);

這是把乙個日期從 mm/dd/yyyy 的格式轉為 dd/mm/yyyy 格式。我的乙個好朋友告訴我可以把這個正規表示式拆解為以下的語句,對於如此簡單的表示是來說其實無須拆解,純粹為了解說的方便:

// 對應乙個或更多 0-9,後面緊隨乙個斜號$regexpression = 「([0-9]+)/」;// 應乙個或更多 0-9,後面緊隨另乙個斜號$regexpression .= 「([0-9]+)/」;// 再次對應乙個或更多 0-9$regexpression .= 「([0-9]+)」;至於 \\2/\\1/\\3 則是用來對應括號,第乙個括號對的是月份,第二個括號對應的是日期,第三個括號對應的是年份。

17.給你一行文字 $string,你會如何編寫乙個正規表示式,把 $string 內的 html 標籤除去?

首先,php 有內建函式 strip_tags() 除去 html 標籤,為何要自行編寫正規表示式?好了,便當作是面試的一道考題吧,我會這樣回答:

$stringoftext = 「this is a test

」;$expression_r = 「/<(.*?)>(.

*?)<\/(.*?

)>/」;echo preg_replace($expression_r, 「\\2″, $stringoftext);// 有人說也可以使用 /(<[^>]*>)/ $expression_r = 「/(<[^>]*>)/」;echo preg_replace($expression_r, 「」, $stringoftext);

18.php 和 perl 分辨陣列和雜湊表的方法有什麼差異?

2019php面試題和答案整理

1.以下哪一句不會把 john 新增到 users 陣列?users john 成功把 john 新增到陣列 users。array add users,john 函式 array add 無定義。array push users,john 成功把 john 新增到陣列 users。users jo...

php面試題和答案

1 用php列印出前一天的時間格式是2006 5 10 22 21 21 2分 a date y m d h i s strtotime 1 day print r a 2 echo print print r 的區別 3分 echo 和print不是乙個函式,是乙個語言結構 int print s...

新浪php面試題

網上轉的一篇文章,不知道真的是不是sina的,題目很普通。無論是不是真的新浪面試題,對於正在求職的同行來說,也算可以練練手的了。這些面試題都帶了答案,看著還行 1.echo count abc 輸出什麼?答 1 count 計算陣列中的單元數目或物件中的屬性個數 int count mixed va...