你是否正在准備尋找一份PHP開發的工作,並且也在尋找一些關於PHP的面試題及答案?本文為大家分享了一些被提問頻率最高的11個PHP面試題,以及對應的常規回答,每個公司都有自己的面試標准,面試和問題是完全取決於你在工作中所扮演的角色,當然也和你的編程技能息息相關。
回答:PHP全稱:Hypertext Preprocessor,是一種用來開發動態網站的服務器腳本語言。
回答:MVC由Model(模型), View(視圖)和Controller(控制器)組成,PHP MVC可以更高效地管理好3個不同層的PHP代碼。
Model:數據信息存取層。
View:view層負責將應用的數據以特定的方式展現在界面上。
Controller:通常控制器負責從視圖讀取數據,控制用戶輸入,並向模型發送數據。
回答:在頁面中使用CSS有3中方式:
回答:不可以。PHP類只能繼承一個父類,並用關鍵字“extended”標識。
這兩個看起來很相似,因為它們都是將一些值打印在屏幕上。但是echo和print的本質區別在於:echo用來輸出字符串,顯示多個值的時候可以用逗號隔開。只支持基本類型,print不僅可以打印字符串值,而且可以打印函數的返回值。
回答:我們再網頁上填寫的表單信息都可以通過這兩個方法將數據傳遞到服務器上,當我們使用GET方法是,所有的信息都會出現在URL地址中,並且使用GET方法最多只能傳遞1024個字符,所以如果在傳輸量小或者安全性不那麼重要的情況下可以使用GET方法。說到POST方法,最多可以傳輸2MB字節的數據,而且可以根據需要調節。
回答:getimagesize () 獲取圖片的尺寸
Imagesx () 獲取圖片的寬度
Imagesy () 獲取圖片的高度
回答:PEAR也就是為PHP擴展與應用庫(PHP Extension and Application Repository),它是一個PHP擴展及應用的一個代碼倉庫。
回答:我們可以在數據庫中存放視頻的地址,而不需要將真正的視頻數據存在數據庫中。可以將視頻數據存放在服務器的指定文件夾下,上傳的默認大小是2MB,但是我們也可以在php.ini文件中修改max_file size選項來改變。
回答:PHP中遇到的錯誤類型大致有3類。
提示:這都是一些非常正常的信息,而非重大的錯誤,有些甚至不會展示給用戶。比如訪問不存在的變量。
警告:這是有點嚴重的錯誤,將會把警告信息展示給用戶,但不會影響代碼的輸出,比如包含一些不存在的文件。
錯誤:這是真正的嚴重錯誤,比如訪問不存在的PHP類。
回答:PHP中使用Define () 來定義常量。
define (“Newconstant”, 30);
如果我們不想用submit按鈕來提交表單,我們也可以用超鏈接來提交,我們可以這樣寫代碼:
<a href=”javascript: document.myform.submit();”>Submit Me</a>
原文:Top PHP Job Interview Questions and Answers for 2014 譯文:codeceo – 小峰
以下哪一句不會把 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(){
$num =$num *10;
}
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......余下全文>>
bool ksort ( array &array [, int sort_flags] )
對數組按照鍵名排序,保留鍵名到數據的關聯。本函數主要用於關聯數組。
如果成功則返回 TRUE,失敗則返回 FALSE。
例子:
<?php
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>
上例將輸出:
a = orange
b = banana
c = apple
d = lemon
bool asort ( array &array [, int sort_flags] )
本函數對數組進行排序,數組的索引保持和單元的關聯。主要用於對那些單元順序很重要的結合數組進行排序。
如果成功則返回 TRUE,失敗則返回 FALSE。
例子
<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
asort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>
上例將輸出:
c = apple
b = banana
d = lemon
a = orange
bool sort ( array &array [, int sort_flags] )
本函數對數組進行排序。當本函數結束時數組單元將被從最低到最高重新安排。
注: 本函數為 array 中的單元賦予新的鍵名。這將刪除原有的鍵名而不僅是重新排序。
如果成功則返回 TRUE,失敗則返回 FALSE。
例子
<?php
$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
foreach ($fruits as $key => $val) {
echo "fruits[".$key."] = " . $val . "\n";
}
?>
上例將輸出:
fruits[0] = apple
fruits[1] = banana
fruits[2] = lemon
fruits[3] = orange...余下全文>>