《php面试题及答案,经典php笔试题与答案.doc》由会员分享,可在线阅读,更多相关《php面试题及答案,经典php笔试题与答案.doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、问题1 选择合适的答案填入空白处PHP 是一种_脚本语言,基于_引擎。PHP 最常被用来开发动态的_内容,此外,它同样还可被用来生成_(以及其他)文档。A动态,PHP,数据库,HTMLB嵌入式,Zend,HTML,XMLC基于 Perl 的,PHP,Web,静态D嵌入式,Zend,Docbook 文档,MySQLE基于 Zend 的,PHP,图像,HTML1 唯一有意义的答案是 B。PHP 是一种基于 Zend 引擎的脚本语言,它通常被嵌入在 HTML代码中。它主要被用来开发 HTML 文档,但是也可以用它来开发其他类型的文档,比如 XML。2以下哪种标签不是 PHP 起始/结束符?AB/CD
2、/* */E2 PHP 编程中,人们不太使用和两个标签,但它们确实是合法的 PHP 界定符。标签是非法的,因此正确的答案是 D。记住,根据 php.ini 文件中的配置不同,这当中的某些标签无法在特定的情况下使用。3以下代码哪个不符合 PHP 语法?A$_10B$“MyVar”C&$somethingD$10_somethingsE$aVaR3 PHP 变量以一个美元符号为开头,后面跟上任意数量的数字、字母和下划线。$“MyVar”是一个合法的变量名,它使用的是较松散的命名约定。&$something 是对$something 的引用。然而,变量名不能以数字为开头,$10_somethings
3、 是非法的,因此答案是 D。4运行以下代码将显示什么?define(myvalue, 10);$myarray10 = Dog;$myarray = Human;$myarraymyvalue = Cat;$myarrayDog = Cat;print The value is: ;print $myarraymyvalue.n;?2AThe Value is: DogBThe Value is: CatCThe Value is: HumanDThe Value is: 10EDog4 注意,$myarray 的键值并没有打上引号。所以,正在访问的键不是 myvalue 字符串,而是常量 m
4、yvalue 的值。最终访问的是$myarray10,值是 Dog,答案是 A。5 print()和 echo()有什么区别?Aprint()能作为表达式的一部分,echo()不能Becho()能作为表达式的一部分,print()不能Cecho()能在 CLI(命令行)版本的 PHP 中使用,print()不能Dprint()能在 CLI(命令行)版本的 PHP 中使用,echo()不能E没有区别:两个函数都打印文本!5 尽管 print()和 echo()在绝大多数情况下可以互换使用,但它们之间还是有一处不同。print()是函数,有返回值;echo()实际上是一个语言结构,没有返回值,并且
5、不能在表达式中使用。因此,答案是 A。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 A128B42C242.0D256E3426 %运算符表示取模,它返回两个操作数相除的余数。AFalse, True, FalseBTrue, True, FalseCFalse, True, TrueDFalse, False, TrueETrue, True, True7 根据条件式的逻辑,要想得到 Hello, World!字符串,必须
6、要在第一个 if 结构中满足 else的条件。因此$a 必须为 False,然后$b 也必须为 False。最内层的条件语句的实现要求先前的两个变量($a 和$b)是 False,而$c 必须是 True(答案是 D)。8以下脚本输出什么?$array = ABCDEFG;$s = ;for ($i = 1; $i A50 个随机字符组成的字符串B49 个相同字符组成的字符串,因为没有初始化随机数生成器C49 个随机字符组成的字符串D什么都没有,因为$array 不是数组4E49 个字母G组成的字符串8 正确答案是 C。从 PHP4.2.0 开始,除非已经给定了一个伪随机整数列,否则不再需要用
7、 srand()函数初始化随机数生成器。此外,即使随机数生成器没有被事先播种,脚本仍然会生成 49 个伪随机字符。尽管$array 变量是字符串,但可以用访问数组的方式进行访问使用数字索引访问某个位置上的字符。最后,for 循环将从 1 开始执行到 50,也就是执行了 49 次9哪种语句结构用来表现以下条件判断最合适?if($a = a) somefunction(); else if ($a = b) anotherfunction(); else if ($a = c) dosomething(); else donothing();?A没有 default 的 switch 语句B一个递
8、归函数Cwhile 语句D无法用别的形式表现该逻辑E有 default 的 switch 语句9 用一系列的 ifelse 语句来检查一个条件的代码块,最适合用 switch 语句来替代。switch($a) case a:somefunction();break;case b:10anotherfunction();break;case c:dosomething();break;default:donothing();?因为 if 语句中有一个捕捉所有其他条件的 else,对应的,switch 代码块需要一个 default。正确答案是 E。10要修改每个元素的值,如何遍历$myarray
9、 数组最合适?$myarray = array (My String,Another String,Hi, Mom!);?A用 for 循环B用 foreach 循环C用 while 循环D用 dowhile 循环E办不到!10通常情况下,foreach 语句是遍历数组的首选。但是,由于 foreach 语句是在数组的副本上进行操作,而我们需要给数组中每个元素重新赋值,所以在这里 foreach 就不适用了。尽管也可以用 while 循环和 dowhile 循环,但由于数组是顺序索引的,最合适的语句还是 for 语句。因此答案是 A。$myarray = array (My String, A
10、nother String, Hi, Mom!);for($i = 0; $i 11考虑如下代码片段:define(STOP_AT, 1024);$result = array();/* 在此处填入代码 */5$result = $idx;print_r($result);?标记处填入什么代码才能产生如下数组输出?Array0 = 11 = 22 = 43 = 84 = 165 = 326 = 647 = 1288 = 2569 = 512Aforeach($result as $key = $val)Bwhile($idx *= 2)Cfor($idx = 1; $idx = $idx; $
11、idx = 0)Ewhile($idx STOP_AT) do $idx *= 211由于题目只允许填写一行代码,唯一合适的是 for 循环,因此答案只能是 C 或者 D。要选出能生成正确结果的 for 循环,我们必须先复习一下 for 循环的构成要素。PHP 中,for 循环是这样声明的:for(;)在循环开始时执行一次,然后 for 循环开始执行大括号内的代码,直到的值为 False。每完成一次循环,执行一次。因此,正确的代码块应该是:for ($idx = 1; $idx Afunction is_leap($year = 2000)Bis_leap($year default 2000
12、)Cfunction is_leap($year default 2000)6Dfunction is_leap($year)Efunction is_leap(2000 = $year)125 个选项中,只有两个是合法的 PHP 函数声明(A 和 D)。在这两个选项中,只有一个设置了参数的默认值答案是 A。13运行以下代码将显示什么值?假设代码运行时的 URL 是:testscript.php?c=25function process($c, $d = 25)global $e;$retval = $c + $d - $_GETc - $e;return $retval;$e = 10;ec
13、ho process(5);?A25B-5C10D5E013本题考察 PHP 中变量作用域的相关知识。你必须明确 global 关键字是如何将变量引入本地域的,以及$_GET、$_POST、$_COOKIE、$_REQUEST 等超级全局变量的作用域。本题中,最终的数学表达式是 5+25-25-10,等于-5,答案是 B。14考虑如下代码:function myfunction($a, $b = true)if($a & !$b) echo Hello, World!n;$s = array(0 = “my”,1 = “call”,2 = $function,3 = ,4 = “functio
14、n”,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!字符串,该如何选择数字索引?AGroup A: 4,3,0,4,9,9 Group B: 7,8BGroup A: 1,3,0,4,9,9 Group B: 7,6CGroup A: 1,3,2,3,0,4 Group B: 5,8DG
15、roup A: 0,4,9,9,9,9 Group B: 7,8EGroup A: 4,3,0,4,9,9 Group B: 7,814函数能被以一个包含着函数名的变量后面加上括号(以及必要的参数)的形式动态调用。对于Group A来说,合适的索引组合是0,4,9,9,9,9,产生字符串myfunction。另一方面,参数将使用$结构的可变变量。对Group B来说,合适的索引应该是7和8,等于$a$和b即$a和$b。因此答案是D。15运行时(run-time)包含一个 PHP 脚本使用_,而编译时(compile-time)包含一个 PHP 脚本使用_。Ainclude_once, incl
16、udeBrequire, includeCrequire_once, includeDinclude, requireE以上皆可15在较新版本的 PHP 中,require(或 requier_once())和 include()(或 include_once()只有一个区别如果包含的文件不存在,前者将产生一个致命错误,同时终止脚本的执行;而后者只会产生一个警告。因此答案 E 正确。16什么情况下声明函数时不能给参数赋默认值?A当参数是布尔值时B当函数是类中的成员时C当参数是通过引用传递时D当函数只有一个参数时E永远不会16当参数被声明为通过引用传递时,你不能给它赋默认值,此时解释器期望获得一
17、个能在函数内部进行修改的变量。答案是 C。17_操作符在两个操作数中有一个(不是全部)为 True 时返回 True。答案:_17正确答案是逻辑异或(xor)运算符。18全等运算符=如何比较两个值?A把它们转换成相同的数据类型再比较转换后的值B只在两者的数据类型和值都相同时才返回 True8C如果两个值是字符串,则进行词汇比较D基于 strcmp 函数进行比较E把两个值都转换成字符串再比较18全等运算符比较两个操作数的数据类型和值,两者中有一个不同,都会返回 False。因此答案是 B。19以下哪个选项是把整型变量$a 的值乘以 4?(双选)A$a *= pow (2, 2);B$a = 2;C$a = 2;D$a += $a + $a;E一个都不对19答案是 A 和 C。A 选项中,pow 函数计算 2 的平方,答案是 4。C 选项中,左移运算符将$a 的值左移两位,相当于乘以 4。20一段脚本如何才算彻底终止?A当调用 exit()时B当执行到文件结尾时C当 PHP 崩溃时D当 Apache 由于系统故障而终止时20答案是 A。一段脚本并不会在执行到文件末尾时终止,所以当前文件才能被其他脚本包含。至于 PHP 和 Apache 崩溃,这两个说法就太恶搞了。
限制150内