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...