2024年2月3日发(作者:)
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@ , 以 下 哪 项 能
把 字 符 串 转 化 成
?
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.考虑如下脚本。假设 能被访问,脚本将输出什么?
$s = file_get_contents ("");
strip_tags ($s, array ('p'));
echo count ($s);
>
A. 的主页的字符数
B.剔除
标签后的 主页的字符数
C.1
D.0
E.剔除
以外的标签后的 主页的字符数
16.哪个函数能不区分大小写得对两个字符串进行二进制比对?
A.strcmp()
B.stricmp()
C.strcasecmp()
D.stristr()
E.以上都不能
17.以下哪些函数能把字符串里存储的二进制数据转化成十六进制?(双选)A.encode_hex()
B.pack()
C.hex2bin()
D.bin2hex()
E.printf()
18.哪个函数能用来确保一个字符串的字符数总是大于一个指定值?答案:____________
19.以下脚本输出什么?
$a = 'able osts indy';
echo wordwrap ($a, 1, "c", false);
>
答案:____________
20.以下脚本输出什么?
$x = 'apple';
echo substr_replace ($x, 'x', 1, 2);
>
A.x
B.axle
C.axxle
D.applex
E.xapple
答案
1. substr 函数能够胜任,但考虑到输出三个字母就需要三次调用该函数,所以排除此方法。
那么$alpha{$val}和$alpha{$val+1}是仅有的两个可能输出题目要求的字符串的选项。因
为 0 是数组的第一个索引,所以答案是 D。
2. 除了 A 以外的选项都能输出题目要求的字符串。PHP 中,加号(+)不能把两个字符
串合并成一个。
3. substr 函数返回字符串的一部分,而 strpos 函数擅长从一个字符串中找出某个指定的子
串。同时使用这两个函数将满足题目要求。注意,前一个函数从 0 开始索引,而后者
不是,因此需要+1。答案是 D。
4. 答案是 D。explode 函数使用一个字符串分隔另一个字符串,并把结果放入一个新建的
数组。strtok 函数也可以做同样的事,但需要多次调用。
5. 答案是 D。strcmp()提供了安全的字符串比较机制。注意,选项 C 是错的,strcasecmp()
不是一个“万能”函数,因为它不区分大小写。
6. 选项中没有一个正则表达式能真正代表题目所给字符串的匹配方式,但是选项 A 和 E
仍然能勉强匹配。选项 A 太普通了,它能够匹配任何字符串,因此答案是 E。
7. 正确答案是 A,B 和 E。用 crypt()和 str_rot13()来验证一个字符串是否被改变,效率很
低。crc32()比前面两个函数好些,如果能容忍一些小错误的话,它是个不错的选择。
8. file 函数将文件的文本内容读入一个数组,每个元素是一行。因此答案 E 正确。也许你
想知道为什么要把这样一个题目放在讲字符串的章节中,那是为了提醒你每一章的题
目所包含的知识点并不是绝对严格区分开的,正如写 PHP 脚本时,file 函数不能脱离
字符串函数单独存在一样。
9. 尽管条件不同,但 preg_split 和 explode 函数都能满足题目要求。ereg()拿一个正则表达
式匹配一个字符串;str_split()按固定长度分隔字符串;而 chop()则是 rtrim()别名,用来
移除字符串末尾处的空格。
10.本题考察你对字符串操作及操作符优先级的认识。连接运算符(.)的优先级比加号(+)
高。因此 PHP 解释器实际执行的运算可以表示为(‘Testing ‘ . 1) +
(2 . ’45′)。由于字符串
test 1 不是数字,所以加号前面的运算等于 0。加号后面的运算等于 245,PHP
输出的
结果是 0+245,等于 245,所以答案是 D。
11.可以用访问数组元素的方式访问字符串中的字符,因此脚本只是把字符串中的第二个
字符($s[1])替换成了字符 2,最终将输出 12245。答案是 B。
12.本题的要点是理解这个正则表达式的含义——从左往右,首先是零个或多个任意字符
(.*),跟着是一个星号(*),然后是 123,最后是一个数字。因此答案是 C
和 D。
13.B 和 E 正确。选项 B 中,在比较时,字符串 top 等同于数字 0。==操作符不比对数据
类型,所以将返回 true。答案 E 中,字符串 123 等同于数字 123,比较将返回 true。
14.字符串将被转换成数字(如果无法发生转换就是 0),然后与整型数字相加。答案是 B。
15.代码的本意是剔除 主页上除了 p 以外的的所有 HTML 标签。可实际上,
在代码的最后一行使用了 count 函数,它统计变量中的元素数量,而不是字符串中的字
符数。由于字符串是标量,对字符串使用 count 函数将永远返回 1。答案是 C。
16.题目其实就是在描述 strcasecmp 函数的作用,因此答案是 C。
17.正确答案是 B 和 D。pack 函数能对二进制数据进行复杂的格式化,包括将字符串中的
字符转化成十六进制表示。bin2hex 函数也有同样的转化功能。注意,printf()能将整数
转化成十六进制数,但无法转化字符串。
18.这是在说 str_pad 函数,它可以把字符串填充到指定长度。
19.脚本将输出 ablecostscindy。wordwrap 函数通常用来把字符串切割成指定长度。然而在
本题中,长度被设置为 1,因此函数将从空格处切割(第四个参数被设置为
false,因
此函数不会从单词的中间进行切割)。填充字符串是 c,等于把每个空格都换成了 c。
20.substr_replace 函数是用一个指定字符串替换原字符串中的某个部分,因此脚本输出
axle,答案是 B。
文件操作
你可能觉得PHP的文件操作功能并不怎样,但实际上它对开发者来说非常有用。即使你
是做网站开发的,学会相关技能也能让你如虎添翼。多亏了流包装器(stream
wrappers,将
在第十章详细介绍),PHP才能够打开并读取远程文件,让在本地使用第三方网站的内容变
得可能。
站在更底层的角度,文件输入/输出能完成多种任务。可以用他读取预制文件的内容,
比如第三方提供的内容;或者通过PHP脚本让浏览器打开一个二进制文件,使得你能更切实
的控制它。无论如何,本章不仅考验你打开、关闭和读取文件的能力,还考查多进程下进行
文件操作的基础知识——例如文件锁。
php面试题及答案,经典php笔试题与答案
1. 函数______能读取文本文件中的一行。读取二进制文件或者其他文件时,应当使用
______函数。
A.fgets(), fseek()
B.fread(), fgets()
C.fputs(), fgets()
D.fgets(), fread()
E.fread(), fseek()
2. 文件指针能在PHP脚本结束时自动关闭,但你也可以用______函数来关闭。
答案:____________
3. 考虑如下PHP脚本,它一行一行的读取并显示某文本文件的内容。在问号处填入什么才
能使脚本正常运作?
$file = fopen("test", "r");
while(!feof($file)) {
echo ;
}
fclose($file);
>
A.file_get_contents($file)
B.file($file)
C.read_file($file)
D.fgets($file)
E.fread($file)
4. 以下哪种方法能保证锁在任何竞争情况下都安全?
A.用flock()锁住指定文件
B.用fopen()在系统的临时文件夹里打开文件
C.用tempnam()创建一个临时文件
D.用mkdir()创建一个文件夹来当
E.用tmpfile()创建一个临时文件
5.以下哪个函数能够获得文件的全部内容,并能够用在表达式中?(双选)
A.file_get_contents()
B.fgets()
C.fopen()
D.file()
E.readfile()
6. 在不把文件内容预加载到变量中的前提下,如何解析一个以特殊格式格式化过的多行文
件?
A.用file()函数把它分割放入数组
B.用sscanf()
C.用fscanf()
D.用fgets()
E.用fnmatch()
7.考虑如下脚本,最后文件的内容是什么?
$array = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$f = fopen ("", "r");
for ($i = 0; $i < 50; $i++) {
fwrite ($f, $array[rand(0, strlen ($array) - 1)]);
}
>
A.什么都没有,因为$array实际上是一个字符串,而不是数组
B.49个随机字符
C.50个随机字符
D.41个随机字符
E.什么都没有,或者文件不存在,脚本输出一个错误
8.函数delete是做什么的?
A.删除文件
B.删除文件夹
C.释放变量
D.移除数据库记录
E.没有这个函数!
9.考虑如下脚本,哪个PHP函数和它的功能最接近?
function my_funct ($file_name, $data)
{
$f = fopen ($file_name, 'w');
fwrite ($f, $data);
fclose ($f);
}
>
A.file_get_contents()
B.file_put_contents()
C.没有这样的函数
D.file()
E.fputs()
10.如果你的脚本无法正确识别一个存储于另一个平台上的文件的行结尾,你该怎么办?
A.改变auto_detect_line_ending的设置
B.用正则表达式侦测行的最后一个字母
C.用fpos()
D.用ftok()
E.每次读取一个字符
11.如果想要可读可写得打开一个文件,该给fopen()传什么参数?(双选)
A.w
B.r
C.a
D.+
12.能够读写常规文件中的二进制数据的函数是______,该函数返回的资源能被fgets()使用。
答案:__________
13.以下哪些函数能读取文件的全部内容?(三选)
A.fgets()
B.file_get_contents()
C.fread()
D.readfile()
E.file()
14.哪个函数能够往文本文件中写入一个字符串?
答案:____________
15.考虑如下脚本。运行时,尽管文件已经被用unlink()函数删除,脚本仍然输出1,1。
在脚本的最后添加什么函数才能解决这个问题?
$f = fopen ("", "w");
fwrite ($f, "test");
fclose ($f);
echo (int) file_exists("") . ', ';
unlink ("c:");
echo (int) file_exists ("");
>
A.clearstatcache()
B.fflush()
C.ob_flush()
D.touch()
E.以上都不对
16.函数______能判断一个文件是否可写。
答案:____________
17.以下哪个选项能将文件指针移到开头?
A.reset()
B.fseek(-1)
C.fseek(0, SEEK_END)
D.fseek(0, SEEK_SET)
E.fseek(0, SEEK_CUR)
18.stat()和fstat()有什么区别?
A.stat()基于文件指针工作,fstat()基于路径工作
B.fstat()基于文件指针工作,stat()基于路径工作
C.fstat()不能处理文件
D.stat()不能处理文件
E.fstat()是stat()的别名
19.以下哪个选项准确的描述出了方框中的脚本的作用?
echo number_format (disk_free_space ('c:') /
disk_total_space('c:') * 100, 2) . '%';
>
A.计算Windows系统C盘的剩余磁盘空间大小
B.输出一个表示C盘剩余空间所占比例的两位小数
C.输出C盘剩余容量的byte数
D.计算C盘总容量与剩余空间的比率
E.以上都不对
20.假设存在并能够被PHP读取,调用以下脚本时,浏览器上显示什么?
header ("Content-type: image/jpeg");
>
readfile ("");
>
A.一张JPEG图片
B.一个二进制文件
C.下载一个二进制文件
D.下载一张JPEG图片
E.一张残破的图片
答案
1. fgets函数主要用来从文本文件中读取一行,当然你也可以指定每次读取的最大长度。
fread函数主要用来读取二进制数据。答案是D。
2. 函数fclose能关闭文件指针。
3. fgets函数能从文件中读取单独一行。因此答案是D。
4. 正确答案是D。这题很难,而且在实践中不大可能会碰到这样的问题——但这不正是你
读这本书的原因吗?!你必须记住,flock()使用一种“协议”锁定机制,即所有其他访
问此文件的进程也必须要使用flock()。如果某个进程没有这么做,竞争就会产生,锁就
不安全。用mkdir创建一个文件夹能保证任何时刻只有一个进程处理能处理某文件,即
保证操作的原子性。因此,你可以创建一个临时文件夹并“护”住它,直到I/O操作完成。
5. 只有file_get_contents和file函数返回文件的全部内容,因此答案是A和D。readfile函数也
能读取文件的全部内容,但它直接把内容送入了输出缓存,因此不能用在表达式中。
6. fscanf函数能根据指定格式解析文件内容,因此答案是C。sscanf函数只能用来操作字符
串。
7. 答案是E。注意,文件被以r模式打开,即只读模式。因此,如果文件不存在,PHP将输
出一个错误来指出没有找到文件。如果文件存在,fopen()将被成功调用,但由于是以只
读方式打开,fwrite()会失败。如果我们用w代替r,脚本就能正常运行,并且
内将有50个随机字符(记住,可以像访问数组那样使用索引来访问字符串)。
8. 答案是E。PHP里没有叫delete()的函数。删除文件用unlink(),删除文件夹用rmdir(),数
据库记录用SQL语句删除,释放变量用unset()。
9. 脚本实现的功能与file_put_contents()最接近,但这个函数直到PHP5才被引入,因此答案
是C。
10.PHP4.3.0开始,引入了auto_detect_line_endings设置,系统在保存文本文件时能够
自动侦测行结束符号的类型,因此答案是A。
11.要可读可写的打开文件,你必须使用r+模式,因此答案是B和D。
12.这是在说fopen()函数。
13.正确答案是B,D和E。file,readfile和file_get_contents都能读取文件的全部内容。
14.fwrite()和fputs()两个函数在这里都可以,而后者其实是前者的别名。在PHP中,写入二
进制数据和写入字符串没有区别。
15.PHP会缓存某些文件系统函数的返回值——包括file_exists(),这样能提高脚本处理重复
操作时的效率。当脚本里有大量删除文件的操作时,缓存很容易就会过时,因此需要清
理缓存。答案是A。
16.这是在说is_writeable函数,它返回一个表示文件是否可写的布尔值。
17.正确答案是D。fseek()用来移动文件指针。SEEK_SET指出偏移量从文件开头开始计算。
如果没有特别指出,SEEK_SET就是fseek()的默认模式。注意,rewind函数等效于
fseek(0,SEEK_SET)。
18.答案是B。fstat函数通过已打开的文件指针取得文件信息,stat()获取指定路径的文件信
息。
19.正确答案是B。disk_free_space函数能确定指定设备上(本题中即Windows下的C盘)的
剩余磁盘空间(单位是byte),而disk_total_space()能确定设备的总容量。两者相除,再
乘以百分率,最后用number_format()保留两位小数,脚本输出的就是剩余磁盘空间所占
的比例。最后在加上百分号以防混淆。
20.答案是E。你注意到两个代码块之间的空行了吗?它将被输出到浏览器上,使得整个图
片的二进制数据出错。因此浏览器将显示一个破碎的图片(或者是一条信息,指出图片
出错)。 译者注:原文中两个代码块之间并没有空行,而在我添加了空行之后,也没有
调试出答案中描述的情况。)
管理
日期与时间
从某一点上来看,几乎所有的网站都需要处理日期与时间。假如你需要收集用户的生
日,或者记录某个特定事件的发生时间,PHP 的日期函数将很好的帮助你完成任务。
但是 PHP 的日期/时间管理功能并不完美。它基于 UNIX 时间戳运行,容易受到攻击,
作为开发者,你必须谨慎处理可能遇到的恶意数据。
同时,在 Web 上进行日期管理是一件国际性的事务。你必须能依据时区、地区的不同
来显示对应的日期信息。
本章测试题将考察以上所述的全部内容。
1. 选择合适的答案填入空白处
PHP 是一种______脚本语言,基于______引擎。PHP 最常被用来开发动态的______内
容,此外,它同样还可被用来生成______(以及其他)文档。
A.动态,PHP,数据库,HTML
B.嵌入式,Zend,HTML,XML
C.基于 Perl 的,PHP,Web,静态
D.嵌入式,Zend,Docbook 文档,MySQL
E.基于 Zend 的,PHP,图像,HTML
2.以下哪种标签不是 PHP 起始/结束符?
A.<% %>
B.//
C.<?php ?>
D./* */
E.
3.以下代码哪个不符合 PHP 语法?
A.$_10
B.${“MyVar”}
C.&$something
D.$10_somethings
E.$aVaR
4.运行以下代码将显示什么?
define(myvalue, "10");
$myarray[10] = "Dog";
$myarray[] = "Human";
$myarray['myvalue'] = "Cat";
$myarray["Dog"] = "Cat";
print "The value is: ";
print $myarray[myvalue]."n";
>
2
A.The Value is: Dog
B.The Value is: Cat
C.The Value is: Human
D.The Value is: 10
E.Dog
5. print()和 echo()有什么区别?
A.print()能作为表达式的一部分,echo()不能
B.echo()能作为表达式的一部分,print()不能
C.echo()能在 CLI(命令行)版本的 PHP 中使用,print()不能
D.print()能在 CLI(命令行)版本的 PHP 中使用,echo()不能
E.没有区别:两个函数都打印文本!
6.以下脚本输出什么?
$a = 10;
$b = 20;
$c = 4;
$d = 8;
$e = 1.0;
$f = $c + $d * 2;
$g = $f % 20;
$h = $b - $a + $c + 2;
$i = $h << $c;
$j = $i * $e;
print $j;
>
A.128
B.42
C.242.0
D.256
E.342
7.如何给变量$a,$b 和$c 赋值才能使以下脚本显示字符串“Hello, World!”?
$string = "Hello, World!";
$a = ?;
3
$b = ?;
$c = ?;
if($a) {
if($b && !$c) {
echo "Goodbye Cruel World!";
} else if(!$b && !$c) {
echo "Nothing here";
}
}
else {
if(!$b) {
if(!$a && (!$b && $c)) {
echo "Hello, World!";
} else {
echo "Goodbye World!";
}
} else {
echo "Not quite.";
}
}
>
A.False, True, False
B.True, True, False
C.False, True, True
D.False, False, True
E.True, True, True
8.以下脚本输出什么?
$array = 'ABCDEFG';
$s = '';
for ($i = 1; $i < 50; $i++) {
$s .= $array[rand(0,strlen ($array) - 1)];
}
echo $s;
>
A.50 个随机字符组成的字符串
B.49 个相同字符组成的字符串,因为没有初始化随机数生成器
C.49 个随机字符组成的字符串
D.什么都没有,因为$array 不是数组
4
E.49 个字母‘G’组成的字符串
9.哪种语句结构用来表现以下条件判断最合适?
if($a == 'a') {
somefunction();
} else if ($a == 'b') {
anotherfunction();
} else if ($a == 'c') {
dosomething();
} else {
donothing();
}
>
A.没有 default 的 switch 语句
B.一个递归函数
C.while 语句
D.无法用别的形式表现该逻辑
E.有 default 的 switch 语句
10.要修改每个元素的值,如何遍历$myarray 数组最合适?
$myarray = array ("My String","Another String","Hi, Mom!");
>
A.用 for 循环
B.用 foreach 循环
C.用 while 循环
D.用 do…while 循环
E.办不到!
11.考虑如下代码片段:
define("STOP_AT", 1024);
$result = array();
/* 在此处填入代码 */
{
5
$result[] = $idx;
}
print_r($result);
>
标记处填入什么代码才能产生如下数组输出?
Array
{
[0] => 1
[1] => 2
[2] => 4
[3] => 8
[4] => 16
[5] => 32
[6] => 64
[7] => 128
[8] => 256
[9] => 512
}
A.foreach($result as $key => $val)
B.while($idx *= 2)
C.for($idx = 1; $idx < STOP_AT; $idx *= 2)
D.for($idx *= 2; STOP_AT >= $idx; $idx = 0)
E.while($idx < STOP_AT) do $idx *= 2
12.为用户定义函数 is_leap()选择一个合适的函数声明。is_leap 使用 2000
作为默认年份。
/* 函数声明处 */
{
$is_leap = (!($year %4) && (($year % 100) ||
!($year % 400)));
return $is_leap;
}
var_dump(is_leap(1987)); /* Displays false */
var_dump(is_leap()); /* Displays true */
>
A.function is_leap($year = 2000)
B.is_leap($year default 2000)
C.function is_leap($year default 2000)
6
D.function is_leap($year)
E.function is_leap(2000 = $year)
13.运行以下代码将显示什么值?假设代码运行时的 URL 是:?c=25
function process($c, $d = 25)
{
global $e;
$retval = $c + $d - $_GET['c'] - $e;
return $retval;
}
$e = 10;
echo process(5);
>
A.25
B.-5
C.10
D.5
E.0
14.考虑如下代码:
function myfunction($a, $b = true)
{
if($a && !$b) {
echo "Hello, World!n";
}
}
$s = array(0 => “my”,
1 => “call”,
2 => ‘$function’,
3 => ‘ ‘,
4 => “function”,
5 => ‘$a’,
6 => ‘$b’,
7 => ‘a’,
8 => ‘b’,
9 => ”);
$a = true;
7
$b = false;
/* Group A */
$name = $s[?].$s[?].$s[?].$s[?].$s[?].$s[?];
/* Group B */
$name(${$s[?]}, ${$s[?]});
>
脚本中的每个问号(?)代表$s 数组的一个数字索引。要想代码执行时显示 Hello,
World!字符
串,该如何选择数字索引?
A.Group A: 4,3,0,4,9,9 Group B: 7,8
B.Group A: 1,3,0,4,9,9 Group B: 7,6
C.Group A: 1,3,2,3,0,4 Group B: 5,8
D.Group A: 0,4,9,9,9,9 Group B: 7,8
E.Group A: 4,3,0,4,9,9 Group B: 7,8
15.运行时(run-time)包含一个 PHP 脚本使用______,而编译时(compile-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。记住,根据 文件中的配置不同,这
当中的某些标签无法在特定的情况下使用。
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 崩溃,这两个说法就太恶搞了。
本文发布于:2024-02-03 22:04:42,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170696908251430.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |