php试题及答案

更新时间:2023-09-21 13:39:01 阅读量: 工程科技 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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 (\} ?>

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.方框中的正则表达式能与以下哪些选项匹配?(双选)/.*\\*123\\d/ 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.php.net 能被访问,脚本将输出什么? $s = file_get_contents (\strip_tags ($s, array ('p')); echo count ($s); ?>

A.www.php.net 的主页的字符数 B.剔除

标签后的 www.php.net 主页的字符数 C.1

D.0 E.剔除

以外的标签后的 www.php.net 主页的字符数

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, \?>

答案:____________ 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.代码的本意是剔除 www.php.net 主页上除了 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(\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.考虑如下脚本,最后文件myfile.txt的内容是什么? $array = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; $f = fopen (\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.考虑如下脚本。运行时,尽管文件test.txt已经被用unlink()函数删除,脚本仍然输出1,1。

在脚本的最后添加什么函数才能解决这个问题? $f = fopen (\fwrite ($f, \fclose ($f);

echo (int) file_exists(%unlink (\

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()基于路径工作

代码中。它主要被用来开发 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 (\for($i = 0; $i < count($myarray); $i++) {

$myarray[$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 崩溃,这两个说法就太恶搞了。

本文来源:https://www.bwwdw.com/article/yj3h.html

Top