- 相關(guān)推薦
幾道PHP筆試題
無論在學(xué)習(xí)或是工作中,我們都要用到試題,試題可以幫助參考者清楚地認識自己的知識掌握程度。你所了解的試題是什么樣的呢?下面是小編為大家整理的幾道PHP筆試題,希望對大家有所幫助。
幾道PHP筆試題 1
一、基礎(chǔ)知識(每題 5 分,共 30 分)
1. PHP 中變量的命名規(guī)則是什么?請舉例說明合法和非法的變量名。
2. 寫出至少 3 種 PHP 中的數(shù)據(jù)類型,并簡述其特點。
3. PHP 中如何定義一個常量?常量與變量有什么區(qū)別?
4. 簡述 PHP 中注釋的幾種類型,并分別舉例。
5. 以下代碼輸出什么?
$a = 5;
$b = "5";
var_dump($a == $b);
var_dump($a === $b);
6. PHP 中include和require有什么區(qū)別?
二、函數(shù)相關(guān)(每題 8 分,共 40 分)
1. 編寫一個 PHP 函數(shù),實現(xiàn)計算兩個整數(shù)的.最大公約數(shù)。
2. 寫一個 PHP 函數(shù),接受一個字符串作為參數(shù),將字符串中的所有空格替換為下劃線,并返回結(jié)果。
3. 以下是一個 PHP 函數(shù):
function test($num) {
if ($num > 0) {
return $num test($num - 1);
} else {
return 1;
}
}
這個函數(shù)實現(xiàn)了什么功能?計算test(5)的值。
4. 編寫一個 PHP 函數(shù),接受一個數(shù)組作為參數(shù),返回該數(shù)組中的最大值。(不使用 PHP 內(nèi)置的max函數(shù))
5. 在 PHP 中,如何實現(xiàn)一個自定義函數(shù)來檢查一個字符串是否是回文(例如“abba”是回文,“abc”不是)?
三、數(shù)組操作(每題 8 分,共 24 分)
1. 有一個關(guān)聯(lián)數(shù)組$arr = array(name=>John, age=>25, city=>New York);,如何遍歷這個數(shù)組并輸出每個鍵值對?
2. 給定一個索引數(shù)組$nums = [1, 3, 5, 7, 9];,編寫代碼向數(shù)組中添加一個元素 11,并將數(shù)組倒序輸出。
3. 有兩個數(shù)組$arr1 = [1, 2, 3];和$arr2 = [4, 5, 6];,如何將這兩個數(shù)組合并成一個新數(shù)組?
四、數(shù)據(jù)庫操作(6 分)
假設(shè)你有一個 MySQL 數(shù)據(jù)庫,表名為users,包含id(整數(shù),自增主鍵)、name(字符串)和age(整數(shù))三個字段。使用 PHP 的 PDO 擴展連接數(shù)據(jù)庫,并查詢年齡大于 20 的所有用戶的信息。(只需要寫出關(guān)鍵的 PDO 代碼部分)
答案
一、基礎(chǔ)知識
1. 變量命名規(guī)則:
變量名必須以美元符號$開頭。
變量名只能包含字母、數(shù)字和下劃線,且不能以數(shù)字開頭。
合法變量名如$var_name、$user_1;非法變量名如$1var(以數(shù)字開頭)、$var@name(包含非法字符@)。
2. 數(shù)據(jù)類型及特點:
整型(integer):用于表示整數(shù),如$num = 10;,在 32 位系統(tǒng)中范圍是 -2147483648 到 2147483647。
字符串(string):用于表示字符序列,可以用單引號、雙引號或 heredoc 語法來定義。例如$str = hello;或$str2 = "world";,雙引號中的變量會被解析,單引號不會。
布爾型(boolean):只有兩個值true和false,常用于條件判斷,如$isTrue = true;。
數(shù)組(array):可以存儲多個值,可以是索引數(shù)組(用數(shù)字作為索引)或關(guān)聯(lián)數(shù)組(用字符串作為鍵),如$arr = [1, 2, 3];(索引數(shù)組)或$arr2 = array(key1=>value1, key2=>value2);(關(guān)聯(lián)數(shù)組)。
浮點型(float/double):用于表示帶有小數(shù)的數(shù)字,如$floatNum = 3.14;。
3. 常量定義及與變量區(qū)別:
常量使用define()函數(shù)定義,如define(PI, 3.14);,或者使用const關(guān)鍵字(PHP 5.3 及以上),如const MAX_VALUE = 100;。
區(qū)別:變量的值可以在程序運行中改變,而常量一旦定義就不能重新賦值;常量沒有美元符號前綴;常量在整個腳本執(zhí)行期間其值保持不變。
4. 注釋類型及舉例:
單行注釋:使用//,例如// 這是單行注釋。
多行注釋:使用/ /,例如/ 這是多行注釋,可以跨越多行 /。
5. 輸出結(jié)果:
var_dump($a == $b);輸出bool(true),因為==只比較值,5 和"5"的值相等。
var_dump($a === $b);輸出bool(false),因為===比較值和類型,$a是整型,$b是字符串。
6. include和require區(qū)別:
當(dāng)使用include包含文件時,如果文件不存在,會產(chǎn)生一個警告,腳本繼續(xù)執(zhí)行。
當(dāng)使用require包含文件時,如果文件不存在,會產(chǎn)生一個致命錯誤,腳本停止執(zhí)行。
二、函數(shù)相關(guān)
1. 計算最大公約數(shù)函數(shù):
php
function gcd($a, $b) {
while ($b!= 0) {
$temp = $b;
$b = $a % $b;
$a = $temp;
}
return $a;
}
2. 替換空格為下劃線函數(shù):
php
function replaceSpace($str) {
return str_replace( , _, $str);
}
3. 函數(shù)功能及test(5)的值:
這個函數(shù)實現(xiàn)了階乘功能。test(5)的值為5 4 3 2 1 = 120。
4. 求數(shù)組最大值函數(shù)(不使用max):
php
function getMax($arr) {
$max = $arr[0];
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i] > $max) {
$max = $arr[$i];
}
}
return $max;
}
5. 檢查回文函數(shù):
php
function isPalindrome($str) {
$len = strlen($str);
for ($i = 0; $i < $len / 2; $i++) {
if ($str[$i]!= $str[$len - $i - 1]) {
return false;
}
}
return true;
}
三、數(shù)組操作
1. 遍歷關(guān)聯(lián)數(shù)組:
php
$arr = array(name=>John, age=>25, city=>New York);
foreach ($arr as $key => $value) {
echo "$key: $value
";
}
2. 添加元素并倒序輸出索引數(shù)組:
php
$nums = [1, 3, 5, 7, 9];
$nums[] = 11;
rsort($nums);
print_r($nums);
3. 合并兩個數(shù)組:
使用array_merge函數(shù),$newArr = array_merge($arr1, $arr2);。
四、數(shù)據(jù)庫操作
php
try {
$pdo = new PDO(mysql:host=localhost;dbname=your_database, username, password);
$query = "SELECT FROM users WHERE age > 20";
$stmt = $pdo->query($query);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($results);
} catch(PDOException $e) {
echo "Connection failed: ". $e->getMessage();
}
幾道PHP筆試題 2
1. 如何用php的環(huán)境變量得到一個網(wǎng)頁地址的內(nèi)容?ip地址又要怎樣得到?
2. 求兩個日期的差數(shù),例如2007-2-5 ~ 2007-3-6 的日期差數(shù)
3. 請寫一個函數(shù),實現(xiàn)以下功能:
字符串“open_door” 轉(zhuǎn)換成 “OpenDoor”、”make_by_id” 轉(zhuǎn)換成 ”MakeById”。
4. 要求寫一段程序,實現(xiàn)以下數(shù)組$arr1轉(zhuǎn)換成數(shù)組$arr2:
$arr1 = array (
’0′ => array (‘fid’ => 1, ‘tid’ => 1, ‘name’ =>’Name1′ ),
’1′ => array (‘fid’ => 1, ‘tid’ => 2 , ‘name’ =>’Name2′ ),
’2′ => array (‘fid’ => 1, ‘tid’ => 5 , ‘name’ =>’Name3′ ),
’3′ => array (‘fid’ => 1, ‘tid’ => 7 , ‘name’ =>’Name4′ ),
’4′ => array (‘fid’ => 3, ‘tid’ => 9, ‘name’ =>’Name5′ )
);
$arr2 = array (
’0′ => array (
’0′ => array ( ‘tid’ => 1, ‘name’ => ‘Name1′),
’1′ => array ( ‘tid’ => 2, ‘name’ => ‘Name2′),
’2′ => array ( ‘tid’ => 5, ‘name’ => ‘Name3′),
’3′ => array ( ‘tid’ => 7, ‘name’ => ‘Name4′)
),
’1′ => array (
’0′ => array ( ‘tid’ => 9, ‘name’ => ‘Name5′ )
)
);
5. 請簡述數(shù)據(jù)庫設(shè)計的范式及應(yīng)用。
一般第3范式就足以,用于表結(jié)構(gòu)的優(yōu)化,這樣做既可以避免應(yīng)用程序過于復(fù)雜同時也避免了SQL語句過于龐大所造成系統(tǒng)效率低下。
6.一個表中的Id有多個記錄,把所有這個id的記錄查出來,并顯示共有多少條記錄數(shù),用SQL語句及視圖、存儲過程分別實現(xiàn)。
DELIMITER //
CREATE PROCEDURE ProcGet
(
IN ID_a INT(11)
)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN END;
SELECT COUNT() AS Sum FROM News Where ID = ID_a;
END;//
CALL ProcGet(88)//
7 表中有A B C三列,用SQL語句實現(xiàn):當(dāng)A列大于B列時選擇A列否則選擇B列,當(dāng)B列大于C列時選擇B列否則選擇C列。
DELIMITER //
CREATE PROCEDURE ProcOut()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN END;
DECLARE Sum_a INT(11);
DECLARE Sum_b INT(11);
DECLARE Sum_c INT(11);
– 獲取A列中的.總值 <–
DECLARE cur_1 CURSOR FOR SELECT SUM(A) FROM table_name;
OPEN cur_1;
FETCH cur_ 1 INTO Sum_a;
CLOSE cur_1;
– 獲取B列中的總值 <–
DECLARE cur_2 CURSOR FOR SELECT SUM(B) FROM table_name;
OPEN cur_2;
FETCH cur_ 2 INTO Sum_b;
CLOSE cur_2;
– 獲取C列中的總值 <–
DECLARE cur_3 CURSOR FOR SELECT SUM(C) FROM table_name;
OPEN cur_3;
FETCH cur_ 3 INTO Sum_c;
CLOSE cur_3;
IF Sum_a > Sum_b THEN
SELECT A FROM table_name;
ELSEIF Sum_b > Sum_c THEN
SELECT B FROM table_name;
ELSE
SELECT C FROM table_name;
END IF;;
END;//
CALL ProcOut()//
8請簡述項目中優(yōu)化sql語句執(zhí)行效率的方法,從哪些方面,sql語句性能如何分析?
9 如果模板是用smarty模板。怎樣用section語句來顯示一個名為$data的數(shù)組。比如:
$data = array(
[0] => array( [id]=8 [name]=’name1′)
[1] => array( [id]=10 [name]=’name2′)
[2] => array( [id]=15 [name]=’name3′)
……
)
寫出在模板頁的代碼? 若用foreach語句又要怎樣顯示呢?
10 寫一個函數(shù),能夠遍歷一個文件夾下的所有文件和子文件夾。(目錄操作)
11 兩張表 city表和province表。分別為城市與省份的關(guān)系表。
city:
id City Provinceid
1 廣州 1
2 深圳 1
3 惠州 1
4 長沙 2
5 武漢 3
………. 廣州
province:
id Province
1 廣東
2 湖南
3 湖北
……….
(1) 寫一條sql語句關(guān)系兩個表,實現(xiàn):顯示城市的基本信息。?
(2) 顯示字段:城市id ,城市名, 所屬省份 。
如:
Id(城市id) Cityname(城市名) Privence(所屬省份)
(2)如果要統(tǒng)計每個省份有多少個城市,請用group by 查詢出來。?
顯示字段:省份id ,省份名,包含多少個城市。
12. 按照你的經(jīng)驗請簡述軟件工程進行軟件開發(fā)的步驟。以下工具Rational Rose、PowerDesigner、Project、VSS或CVS、TestDirector使用過那種,有缺點是什么?
13. 請簡述操作系統(tǒng)的線程與進程的區(qū)別。列舉LINUX下面你使用過的軟件?
14. 請使用偽語言結(jié)合數(shù)據(jù)結(jié)構(gòu)冒泡排序法對以下一組數(shù)據(jù)進行排序 10 2 36 14 10 25 23 85 99 45。
【幾道PHP筆試題】相關(guān)文章:
筆試題:ASP與PHP04-05
PHP基礎(chǔ)筆試題12-10
PHP筆試題及答案02-11
php面試題?10-29
Yahoo-PHP筆試題02-11
PHP筆試題含答案02-11
騰訊php面試題08-26
PHP面試題匯編04-07
Yahoo的PHP面試題04-05