第一篇:PHP筆試題+答案
程序開發 卷1
PHP程序員考題
考試說明:
1、試卷總分為100分。
2、本次考試時間為120分鐘。
一、邏輯推理題(9分,每題3分)
1.Jack夫婦請了Tom夫婦和Henrry夫婦來他們家玩撲克。這種撲克游戲有一種規則,夫婦兩個不能一組。Jack跟Lily一組,Tom的隊友是Henrry的妻子,Linda的丈夫和Sara一組。那么這三對夫婦分別為:(B)A. Jack—Sara,Tom—linda,Henrry—Lily B. Jack—Sara,Tom—Lily,Henrry—linda C. Jack—linda,Tom—Lily,Henrry—Sara D. Jack—Lily,Tom—Sara,Henrry—linda
2.有17根11.1米長的鋼管,要截成1.0米和0.7米的甲、乙兩種長度的管子,要求截成的甲、乙兩種管子的數量一樣多。問:最多能截出甲、乙兩種管子各多少根?(C)A.99 B.105 C.111 D.121
3.一個水庫在年降水量不變的情況下,能夠維持全市12萬人20年得用水量。在該市新遷入3萬人之后,該水庫只夠維持15年得用水量。市政府號召節約用水,希望能將水庫的使用壽命提高到30年。那么該市市民平均需要節約多少比例的水才能實現政府制定的目標?(A)A.2/5 B.2/7 C.1/3 D.1/4
二、PHP語言題(36分,每題3分)
1.語句for($k=0;$k=1;$k++);和語句for($k=0;$k==1;$k++);執行的次數分別是(3分): A 無限和0 B 0和無限 C 都是無限 D 都是0 參考答案:A
2.讀取post方法傳遞的表單元素值的方法是(3分): A $_post[“名稱”] B $_POST[“名稱”] C $post[“名稱”] D $POST[“名稱”] 參考答案:B
3.下面哪個函數可以打開一個文件,以對文件進行讀和寫操作?(3分)A fget()
程序開發 卷1
B file_open()C fopen()D open_file()參考答案:C
4.下面哪個選項沒有將 john 添加到users 數組中?(3分)(a)$users[] = ‘john’;(b)array_add($users,’john’);(c)array_push($users,‘john’);(d)$users ||= ‘john’;參考答案:B
5.PHP是一種______腳本語言,基于______引擎。PHP最常被用來開發動態的______內容,此外,它同樣還可被用來生成______(以及其他)文檔。(3分)A.動態,PHP,數據庫,HTML B.嵌入式,Zend,HTML,XML C.基于Perl的,PHP,Web,靜態 D.嵌入式,Zend,Docbook文檔,MySQL E.基于Zend的,PHP,圖像,HTML 參考答案:B
6.函數的形參與實參之間的數值傳遞方式有哪些?如何傳遞?(5分)
答:(1)按值傳遞方式,將實參的值復制到對應的形參中,在函數內部的操作針對形參進行,操作的結果不會影響到實參,即函數返回值,實參的值不會改變。
(2)按引用傳遞方式,按引用傳遞方式就是引用將實參的內存地址傳遞到形參中,這時在函數內部的所有的操作都會影響到實參的值,返回后實參的值會發生變化,引用傳遞方式就是傳遞時在原基礎上加&號即可。
(3)默認函數(可選參數)。可選參數指定某個參數為可選參數,將可選參數放在參數引表末尾,并且指定其默認值為空。
7.定義:$str=”a1b2c3”,請寫出下面兩種匹配的結果以及解釋一下兩者的區別。(5分)preg_match(‘/[w]*[d]+/i’),$str,$ary);echo $ary[0];preg_match(‘/[w]*?[d]+/i’,$str,$ary);echo $ary[0];參考答案:第一個輸出為a1b2c3,第二個輸出為a1。
區別主要是[w]*,后面有沒有跟問號,PHP的正則匹配模式默認為貪婪模式,即第一個模式,表示*取盡量多的匹配字符,第二個加了個限定符?,為非貪婪(或懶惰模式),表示*取盡量少的匹配字符。(能寫出貪婪和懶惰的區別,正則表達式已經沒大問題了。)
8.session和cookies 有什么區別?如果瀏覽器禁用了cookies,session還可以使用嗎?為什么?(5分)
參考答案:cookies存儲在客戶端,session存儲在服務端。瀏覽器禁用了cookies,session也不可以使用,因為sesession是需要客戶端發送一個sessionid到服務端,禁用了cookies,客戶端就不能保存此sessionid,session也失效了。(session是常用的,考察使用的熟悉程度)
程序開發 卷1
9.PHP二進制數據流是處理是用什么函數的?(4分)參考答案:pack和unpack。(與服務端通信用到的解析方法)
10.求兩個日期的差數,例如2009-3-1 ~ 2009-4-4 的日期差數?(4分)答:(strtotime(‘2009-4-4’)-strtotime(‘2009-3-1’))/3600*24
三、Linux操作題(20分,每題5分)1.請盡量寫出你熟悉的linux文件操作命令及其作用。
參考答案:自由發揮.基本的文件操作命令rm(移除),mv(移動),cp(復制),chmod(改權限),pwd(查看當前路徑),mkdir(創建目錄)ls(列舉當前目錄)2.3.4.簡述linux下,rsync同步命令怎么實現無需輸入密碼數據同步?(5分)
參考答案:在機器1上生成公鑰私鑰對,將生成的公鑰復制至機器2,加入到~/.ssh/id_dsa.pub。即可實現無密碼同步。(同步沒問題了)
四、綜合問答題(35分,每題5分)1.LAMP,LNMP分別指什么?
參考答案:LAMP:linux,apache,mysql,php LNMP:linux,nginx,mysql,php Linux文本編輯器vim(vi)命令行模式下有:q,:w, /word ,?word表示什么? 參考答案::q退出,:w保存,/word往下查找,?word往上查找.(熟悉linux編輯)linux怎么添加定時任務? 參考答案:crontab –e
2.11.請使用偽語言結合數據結構冒泡排序法對以下一組數據進行排序 10 2 36 14 10 25 23 85 99 45。
答:
$str=’10 2 36 14 10 25 23 85 99 45′;$arr=explode(‘ ‘,$str);$count=count($arr);for($i=0;$i<$count;$i++){ for($j=$i+1;$j<$count;$j++){ if($arr[$j]<$arr[$i]){ $temp=$arr[$i];$arr[$i]=$arr[$j];$arr[$j]=$temp;} } } $str1=implode(‘ ‘,$arr);echo$str1;
3.簡述mysql中union all,left join的用法。
程序開發 卷1
參考答案:Union all將兩次或多次查詢的結果合并。
Left join從左表那里返回所有的行,即使在右表中沒有匹配的行。(這兩個能記住,mysql也比較熟了)
4.Mysql 優化有什么方法?
參考答案:簡單點的就是程序員寫高質量的sql語句,數據庫設計優秀,按需要建立索引(重點)。深入點的,優化mysql配置。
5.一個表中的Id有多個記錄,把所有這個id的記錄查出來,并顯示共有多少條記錄數,用SQL語句及視圖、存儲過程分別實現。
create procedure proc_countNum(in columnId int,out rowsNo int)begin select count(*)into rowsNo from member where member_id=columnId;end call proc_countNum(1,@no);select @no;方法:視圖:
create view v_countNum as select member_id,count(*)as countNum from member group by member_id select countNum from v_countNum where member_id=1
6.請舉例說明在你的開發過程中用什么方法來加快頁面的加載速度
參考答案:自由發揮題,言之有理即可(如:要用到服務器資源時才打開,及時關閉服務器資源,數據庫添加索引,頁面可生成靜態,圖片等大文件單獨服務器。使用代碼優化工具)。
7.對于大流量的網站,您采用什么樣的方法來解決訪問量問題? 參考答案:確認服務器硬件是否足夠支持當前的流量,數據庫讀寫分離,優化數據表,控制大文件的下載,使用不同主機分流主要流量確認服務器硬件是否足夠支持當前的流量,數據庫讀寫分離,優化數據表,程序功能規則,禁止外部的盜鏈,控制大文件的下載,使用不同主機分流主要流量。
第二篇:PHP程序員筆試題(附答案)
普通PHP程序員筆試題
標簽:程序員PHP面試2009-02-06 15:19
1.用PHP打印出前一天的時間,打印格式是2007年5月10日 22:21:21
2.PHP代碼如下:
$a=“hello”;
$b=&$a;
unset($b);
$b=“world”;
echo $a;
其結果是?
3.PHP代碼如下:
$str=“cd”;
$$str=“landog”;
$$str.=“ok”;
echo $cd;
其結果是?
4.用PHP寫一段代碼,實現不使用第3個變量,交換$a、$b的值,$a、$b的初始值自己定。
5.根據題目要求,用PHP寫出代碼。
表名User
IDNameTelContentDate
1張三 ***大專畢業2006-10-11
3張三 ***本科畢業2006-10-15
5張四 020-5566556中專畢業2006-10-15
4王五 ***大專畢業2006-12-25
2????
6????
假設數據庫連接如下:
$mysql_db=mysql_connect(“local”,“root”,“pass”);
@mysql_select_db(“DB”,$mysql_db);
(1)查詢出所有Name等于“張三”的記錄,并輸出。
(2)按ID升序查詢,只返回排序后的前3條記錄,并輸出。
6.javascript能否定義二維數組,如果不能你如何解決?
7.假設a.html和b.html在同一個文件夾下面,用javascript實現當打開a.html五秒鐘后,自動跳轉到b.html。
8.有兩個文件a.html和a.php,代碼如下:
a.html
a.php
$user_name = $_GET['user_name'];
$user_tel = $_GET['user_tel'];
$user_email = $_GET['user_email'];
$user_add = $_GET['user_add'];
echo “用戶名:$user_name
電話:$user_tel
郵箱:$user_email
地址:$user_add
”;
?>
(1)請畫出a.html在瀏覽器的顯示效果圖。
(2)在a.html中輸入:用戶名=張三,電話=020-38259977,郵箱=sunrising@srtek.cn,地址=廣州升瑞,按提交按鈕后輸出結果是?
9.你是否使用過版本控制工具,如果有,請簡要說明。
10.利用CSS樣式表定義已訪問的超鏈接字體大小為14pt,顏色為red。
11.移動任意一位數或符號,使等式成立, 102 = 101-1。注:是移動不是交換,等號不能分開。
12.規律題,3、1、4、1、5、9、2、(), 請按照規律在括號內寫出下一表達式。
13.規律題,5、8、-
3、5、-
2、3、-
1、(),請按照規律在括號內寫出下一表達式。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
答案:
1.echo date('Y-m-d H:i:s', strtotime('-1 day'));
2.hello
3.landogok
4.$a = “abcd”;
$b = “1234”;
echo “初始化時 a=$a,b=$b
”;
$a = $a.$b;
$b = strlen($b);
$b = substr($a, 0,(strlen($a)-$b));
$a = substr($a, strlen($b));
echo “交換后 a=$a,b=$b
”;
5.(1)$sql = “select *from User where >$result = mysql_query($sql);while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
echo $row[‘Name’];
}
(2)$sql = “select * from User order by ID asc limit 0,3”;
$result = mysql_query($sql);
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
echo $row[‘Name’];
}
6.javascript不支持二維數組定義,可以用arr[0] = new array()來解決
7.javascript代碼如下:
function go2b(){
window.location = “b.html”;
window.close();
}
setTimeout(“go2b()”,5000);//5秒鐘后自動執行go2b()
8.(1)如下所示:
略。因為懶得插入圖片,如果想看結果可以把代碼保存為html文件,再用瀏覽器打開查看。
(2)輸出結果應為:
姓名:
電話:
郵箱:
地址:
因為表單是用post方式提交,但在a.php中卻用get方式來讀取,所以不會讀到任何值。
9.略
10.a:visited { font-size: 14pt;color: red;}
11.102 = 101-1
12.答案為6,因為∏=3.1415926
13.答案為2,規律為n=(n-2)– |(n-1)| ,n>=3
第三篇:PHP程序員筆試題
姓名:________________
開始時間:________________(完成時間1個小時)
1、HTTP 協議里 GET和POST請求的區別
2、session與cookie的區別
3、數據庫中的事務是什么?
4、優化MYSQL數據庫的方法,舉例說明。(多寫多得,可寫在反面)
5、PHP語句include和require的區別是什么
6、JS表單彈出對話框函數是什么?獲得輸入焦點函數是什么?
7、下面的PHP5程序的輸出值是什么?
$num = 10;
function multiply(){ $num = $num * 10;
}
multiply();
echo $num;?>
8、PHP檢測一個變量是否有設置的函數是什么?
9、談談對mvc的認識?
10、一個整數數組包含10個元素,未排好序
9,16,25,32,2,1,29,81,36,21 寫一個PHP程序,1)對數組進行排序
2)用二分法查找并輸出 20 這個數在數組中的序(序號從1開始,查找不到返回0),寫在反面
11、請寫一個PHP函數驗證電子郵件的格式是否正確
12、寫出Linux下 創建目錄、刪除目錄、刪除文件、查看指定目錄內容、移動文件的命令,并舉例說明
13、CSS中margin和padding的區別
14、簡述ajax的原理
15、假設給你5臺服務器,請大致的描述一下,如何使用你所熟悉的軟件,搭建一個日PV 100萬左右的中型網站,包括數據庫、WEB服務
第四篇:普通PHP程序員筆試題
普通PHP程序員筆試題
整理于2012-7-3,自己整理的,已經測試過,僅供參考
1.用PHP打印出前一天的時間,打印格式是2007年5月10日 22:21:21
echo date('Y年m月d日 H:i:s',strtotime('-1 day'));
2.PHP代碼如下:
$a=“hello”;
$b=&$a;
unset($b);
$b=“world”;
echo $a;
其結果是?
hello
3.PHP代碼如下:
$str=“cd”;
$$str=“landog”;
$$str.=“ok”;
echo $cd;
其結果是?
landogok
4.用PHP寫一段代碼,實現不使用第3個變量,交換$a、$b的值,$a、$b的初始值自己定$a='2.0';
$b='3.0';list($b,$a)=array($a,$b);
echo $a.'
'.$b;
5.根據題目要求,用PHP寫出代碼。
表名User
IDNameTelContentDate
1張三 ***大專畢業2006-10-11
3張三 ***本科畢業2006-10-15
5張四 020-5566556中專畢業2006-10-15
4王五 ***大專畢業2006-12-25
2????
6????
假設數據庫連接如下:
$mysql_db=mysql_connect(“local”,“root”,“pass”);
@mysql_select_db(“DB”,$mysql_db);
(1)查詢出所有Name等于“張三”的記錄,并輸出。
$sql=“select * from user where name='張三'”;
mysql_query(“set names 'gbk'”);
$result=mysql_query($sql)or die('false');
while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
foreach($row as $key=>$value){
echo $key.':'.$value.“ ”;
}
echo “
”;
}
(2)按ID升序查詢,只返回排序后的前3條記錄,并輸出。
$sql=“select * from user order by id asc limit 0,3”;
mysql_query(“set names 'gbk'”);
$result=mysql_query($sql)or die('false');
while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
foreach($row as $key=>$value){
echo $key.':'.$value.“ ”;
}
echo “
”;
}
6.javascript能否定義二維數組,如果不能你如何解決?
看了很多資料,發現很多都說JS不支持二維數組,不過在JS中對二維數組的定義卻有很多方法,以下是其中四種:
var arr=[[1,2,3],[4,5,6]];
//alert(arr[0][0]);
var arr1=new Array([1,2,3],[4,5,6]);
//alert(arr[0][1]);
var arr2=new Array(new Array(1,2,3),new Array(4,5,6));
//alert(arr[0][2]);
var arr3=new Array();
arr3[0]=new Array(1,2,3);
arr3[1]=new Array(4,5,6);
//alert(arr3[1][0]);
7.假設a.html和b.html在同一個文件夾下面,用javascript實現當打開a.html五秒鐘后,自動跳轉到b.html。
前提是a.html已打開
function go2b(){
window.location = “b.html”;
}
setTimeout(“go2b()”,5000);//5秒鐘后自動執行go2b()
8.有兩個文件a.html和a.php,代碼如下:
a.html
a.php
$user_name = $_GET['user_name'];
$user_tel = $_GET['user_tel'];
$user_email = $_GET['user_email'];
$user_add = $_GET['user_add'];
echo “用戶名:$user_name
電話:$user_tel
郵箱:$user_email
地址:$user_add
”;
?>
(1)請畫出a.html在瀏覽器的顯示效果圖。
略
(2)在a.html中輸入:用戶名=張三,電話=020-38259977,郵箱=sunrising@srtek.cn,地址=廣州升瑞,按提交按鈕后輸出結果是?
輸出結果為:
用戶名:
電話:
郵箱:
地址:
9.你是否使用過版本控制工具,如果有,請簡要說明。
10.利用CSS樣式表定義已訪問的超鏈接字體大小為14pt,顏色為red。
a:visited{font-size:14pt;color:red;}
11.移動任意一位數或符號,使等式成立, 102 = 101-1。注:是移動不是交換,等號不能分開。
將2上移變成10的平方等于101-1,10=101-1
12.規律題,3、1、4、1、5、9、2、(6), 請按照規律在括號內寫出下一表達式。這一串數字是π=3.1415926中的數字,所以為6
13.規律題,5、8、-
3、5、-
2、3、-
1、(2),請按照規律在括號內寫出下一表達式。n=|n-2|-|n-1| 2
第五篇:php試題及答案
php試題及答案
問題
1. 考慮如下腳本。標記處應該添加什么代碼才能讓腳本輸出字符串 php? $alpha = 'abcdefghijklmnopqrstuvwxyz';$letters = array(15, 7, 15);foreach($letters as $val){/* 這里應該加入什么 */ } ?> A.echo chr($val);B.echo asc($val);C.echo substr($alpha, $val, 2);D.echo $alpha{$val};E.echo $alpha{$val+1} 2. 以下哪一項不能把字符串$s1 和$s2 組成一個字符串? A.$s1 + $s2 B.”{$s1}{$s2}” C.$s1.$s2 D.implode(”, array($s1,$s2))E.以上都可以
3. 變 量 $email 的 值 是 字 符 串 user@example.com,把 字 符 串 轉 化 成 example.com?
A.substr($email, strpos($email, “@”));
下 哪 項 能 以 B.strstr($email, “@”);C.strchr($email, “@”);
D.substr($email, strpos($email, “@”)+1);E.strrpos($email, “@”);
4. 給定一個用逗號分隔一組值的字符串,以下哪個函數能在僅調用一次的情況下就把每
個獨立的值放入一個新創建的數組? A.strstr()B.不可能只調用一次就完成 C.extract()D.explode()E.strtok()5. 要比較兩個字符串,以下那種方法最萬能? A.用 strpos 函數 B.用==操作符 C.用 strcasecmp()D.用 strcmp()6. 以下哪個 PCRE 正則表達式能匹配字符串 php|architect? A..* B.…|……… C.d{3}|d{8} D.[az]{3}|[az]{9} E.[a-z][a-z][a-z]|w{9} 7. 以下哪些函數能用來驗證字符串的完整性?(三選)A.md5()B.sha1()C.str_rot13()D.crypt()E.crc32()8. 哪個 PHP 函數與以下腳本在 UNIX 系統下執行的效果近似? function my_funct($filename){ $f = file_get_contents($filename);return explode(“n”, $f);} ?> A.fopen()B.fread()C.flock()D.split_string()E.file()9. 基于指定的式樣(pattern)把一個字符串分隔開并放入數組,以下哪些函數能做到?(雙 選)
A.preg_split()B.ereg()C.str_split()D.explode()E.chop()10.以下腳本輸出什么?
echo 'Testing '.1 + 2.'45';?> A.Testing 1245 B.Testing 345 C.Testing 1+245 D.245 E.什么都沒有
11.以下腳本輸出什么? $s = '12345';$s[$s[1]] = '2';echo $s;?> A.12345 B.12245 C.22345 D.11345 E.Array 12.方框中的正則表達式能與以下哪些選項匹配?(雙選)/.**123d/ A.******123 B.*****_1234 C.******1234
D._*1234 E._*123 13.以下哪個比較將返回 true?(雙選)A.’1top’ == ’1′ B.’top’ == 0 C.’top’ === 0 D.’a’ == a E.123 == ’123′
14.如果用+操作符把一個字符串和一個整型數字相加,結果將怎樣? A.解釋器輸出一個類型錯誤
B.字符串將被轉換成數字,再與整型數字相加 C.字符串將被丟棄,只保留整型數字 D.字符串和整型數字將連接成一個新字符串 E.整形數字將被丟棄,而保留字符串
15.考慮如下腳本。假設 http://www.tmdps.cnpile-time)包含一
個 PHP 腳本使用______。A.include_once, include B.require, include C.require_once, include D.include, require E.以上皆可
16.什么情況下聲明函數時不能給參數賦默認值? A.當參數是布爾值時 B.當函數是類中的成員時 C.當參數是通過引用傳遞時 D.當函數只有一個參數時 E.永遠不會
17.______操作符在兩個操作數中有一個(不是全部)為 True 時返回 True。答案:____________ 18.全等運算符===如何比較兩個值?
A.把它們轉換成相同的數據類型再比較轉換后的值 B.只在兩者的數據類型和值都相同時才返回 True 8 C.如果兩個值是字符串,則進行詞匯比較 D.基于 strcmp 函數進行比較 E.把兩個值都轉換成字符串再比較
19.以下哪個選項是把整型變量$a 的值乘以 4?(雙選)A.$a *= pow(2, 2);B.$a >>= 2;C.$a <<= 2;D.$a += $a + $a;E.一個都不對
20.一段腳本如何才算徹底終止? A.當調用 exit()時 B.當執行到文件結尾時 C.當 PHP 崩潰時
D.當 Apache 由于系統故障而終止時
答案
1. 唯一有意義的答案是 B。PHP 是一種基于 Zend 引擎的腳本語言,它通常被嵌入在 HTML 代碼中。它主要被用來開發 HTML 文檔,但是也可以用它來開發其他類型的文檔,比 如 XML。
2. PHP 編程中,人們不太使用<% %>和兩個標簽,但它們確實是合法的 PHP 界定符。
標簽是非法的,因此正確的答案是 D。記住,根據 php.ini 文件中的配置不同,這
當中的某些標簽無法在特定的情況下使用。
3. PHP 變量以一個美元符號為開頭,后面跟上任意數量的數字、字母和下劃線。${“MyVar”}
是一個合法的變量名,它使用的是較松散的命名約定。&$something 是對$something 的
引用。然而,變量名不能以數字為開頭,$10_somethings 是非法的,因此答案是 D。
4. 注意,$myarray 的鍵值并沒有打上引號。所以,正在訪問的鍵不是 myvalue 字符串,而是常量 myvalue 的值。最終訪問的是$myarray[10],值是 Dog,答案是 A。5. 盡管 print()和 echo()在絕大多數情況下可以互換使用,但它們之間還是有一處不同。
print()是函數,有返回值;echo()實際上是一個語言結構,沒有返回值,并且不能在表
達式中使用。因此,答案是 A。
6. %運算符表示取模,它返回兩個操作數相除的余數。<<是左移運算符,相當于乘以 2 的 N 次方。最后的答案乘以了一個浮點數,改變了它的數據類型。但是,由于小數點
后是零,因此輸出的結果不包含小數部分。答案是 256(D)。
7. 根據條件式的邏輯,要想得到 Hello, World!字符串,必須要在第一個 if 結構中滿足 else 的條件。因此$a 必須為 False,然后$b 也必須為 False。最內層的條件語句的實現要求
先前的兩個變量($a 和$b)是 False,而$c 必須是 True(答案是 D)。8. 正確答案是 C。從 PHP4.2.0 開始,除非已經給定了一個偽隨機整數列,否則不再需要
用 srand()函數初始化隨機數生成器。此外,即使隨機數生成器沒有被事先播種,腳本
仍然會生成 49 個偽隨機字符。盡管$array 變量是字符串,但可以用訪問數組的方式進
行訪問——使用數字索引訪問某個位置上的字符。最后,for 循環將從 1 開始執行到 50,也就是執行了 49 次。
9. 用一系列的 if…else 語句來檢查一個條件的代碼塊,最適合用 switch 語句來替代。switch($a){ case 'a': somefunction();break;case 'b': 10 anotherfunction();break;case 'c': dosomething();break;default: donothing();} ?> 因為 if 語句中有一個捕捉所有其他條件的 else,對應的,switch 代碼塊需要一個 default。正確答案是 E。
10.通常情況下,foreach 語句是遍歷數組的首選。但是,由于 foreach 語句是在數組的副
本上進行操作,而我們需要給數組中每個元素重新賦值,所以在這里 foreach 就不適用
了。盡管也可以用 while 循環和 do…while 循環,但由于數組是順序索引的,最合適的
語句還是 for 語句。因此答案是 A。
$myarray = array(“My String”, “Another String”, “Hi, Mom!”);for($i = 0;$i < count($myarray);$i++){ $myarray[$i].= “($i)”;} ?> 11.由于題目只允許填寫一行代碼,唯一合適的是 for 循環,因此答案只能是 C 或者 D。
要選出能生成正確結果的 for 循環,我們必須先復習一下 for 循環的構成要素。PHP 中,for 循環是這樣聲明的:
for(<初始化>;<繼續執行,直到>;<重復執行>)<初始化>在循環開始時執行一次,然后 for 循環開始執行大括號內的代碼,直到<繼續 執行,直到>的值為 False。每完成一次循環,執行一次<重復執行>。因此,正確的代 碼塊應該是:
for($idx = 1;$idx < STOP_AT;$idx *= 2)答案是 C。
12.5 個選項中,只有兩個是合法的 PHP 函數聲明(A 和 D)。在這兩個選項中,只有一
個設置了參數的默認值——答案是 A。
13.本題考察 PHP 中變量作用域的相關知識。你必須明確 global 關鍵字是如何將變量引入
本地域的,以及$_GET、$_POST、$_COOKIE、$_REQUEST 等超級全局變量的作用 域。本題中,最終的數學表達式是 5+25-25-10,等于-5,答案是 B。14.函數能被以一個包含著函數名的變量后面加上括號(以及必要的參數)的形式動態
調用。對于Group A來說,合適的索引組合是0,4,9,9,9,9,產生字符串myfunction。
另一方面,參數將使用${}結構的可變變量。對Group B來說,合適的索引應該是7 和8,等于${‘a’}$和{‘b’}——即$a和$b。因此答案是D。
15.在較新版本的 PHP 中,require(或 requier_once())和 include()(或 include_once())只有
一個區別——如果包含的文件不存在,前者將產生一個致命錯誤,同時終止腳本的執
行;而后者只會產生一個警告。因此答案 E 正確。
16.當參數被聲明為通過引用傳遞時,你不能給它賦默認值,此時解釋器期望獲得一個能
在函數內部進行修改的變量。答案是 C。17.正確答案是邏輯異或(xor)運算符。18.全等運算符比較兩個操作數的數據類型和值,兩者中有一個不同,都會返回 False。因 此答案是 B。
19.答案是 A 和 C。A 選項中,pow 函數計算 2 的平方,答案是 4。C 選項中,左移運算
符將$a 的值左移兩位,相當于乘以 4。
20.答案是 A。一段腳本并不會在執行到文件末尾時終止,所以當前文件才能被其他腳本
包含。至于 PHP 和 Apache 崩潰,這兩個說法就太惡搞了。