问题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起始/结束符?A.%%B.//C.?php?D./**/E.2.PHP编程中,人们不太使用%%和两个标签,但它们确实是合法的PHP界定符。标签是非法的,因此正确的答案是D。记住,根据php.ini文件中的配置不同,这当中的某些标签无法在特定的情况下使用。3.以下代码哪个不符合PHP语法?A.$_10B.${“MyVar”}C.&$somethingD.$10_somethingsE.$aVaR3.PHP变量以一个美元符号为开头,后面跟上任意数量的数字、字母和下划线。${“MyVar”}是一个合法的变量名,它使用的是较松散的命名约定。&$something是对$something的引用。然而,变量名不能以数字为开头,$10_somethings是非法的,因此答案是D。4.运行以下代码将显示什么?define(myvalue,10);$myarray[10]=Dog;$myarray[]=Human;$myarray['myvalue']=Cat;$myarray[Dog]=Cat;printThevalueis:;print$myarray[myvalue].\n;?2A.TheValueis:DogB.TheValueis:CatC.TheValueis:HumanD.TheValueis:10E.Dog4.注意,$myarray的键值并没有打上引号。所以,正在访问的键不是myvalue字符串,而是常量myvalue的值。最终访问的是$myarray[10],值是Dog,答案是A。5.print()和echo()有什么区别?A.print()能作为表达式的一部分,echo()不能B.echo()能作为表达式的一部分,print()不能C.echo()能在CLI(命令行)版本的PHP中使用,print()不能D.print()能在CLI(命令行)版本的PHP中使用,echo()不能E.没有区别:两个函数都打印文本!5.尽管print()和echo()在绝大多数情况下可以互换使用,但它们之间还是有一处不同。print()是函数,有返回值;echo()实际上是一个语言结构,没有返回值,并且不能在表达式中使用。因此,答案是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$c;$j=$i*$e;print$j;?A.128B.42C.242.0D.256E.3426.%运算符表示取模,它返回两个操作数相除的余数。是左移运算符,相当于乘以2的N次方。最后的答案乘以了一个浮点数,改变了它的数据类型。但是,由于小数点后是零,因此输出的结果不包含小数部分。答案是256(D)。7.如何给变量$a,$b和$c赋值才能使以下脚本显示字符串“Hello,World!”?$string=Hello,World!;$a=?;3$b=?;$c=?;if($a){if($b&&!$c){echoGoodbyeCruelWorld!;}elseif(!$b&&!$c){echoNothinghere;}}else{if(!$b){if(!$a&&(!$b&&$c)){echoHello,World!;}else{echoGoodbyeWorld!;}}else{echoNotquite.;}}?A.False,True,FalseB.True,True,FalseC.False,True,TrueD.False,False,TrueE.True,True,True7.根据条件式的逻辑,要想得到Hello,World!字符串,必须要在第一个if结构中满足else的条件。因此$a必须为False,然后$b也必须为False。最内层的条件语句的实现要求先前的两个变量($a和$b)是False,而$c必须是True(答案是D)。8.以下脚本输出什么?$array='0123456789ABCDEFG';$s='';for($i=1;$i50;$i++){$s.=$array[rand(0,strlen($array)-1)];}echo$s;?A.50个随机字符组成的字符串B.49个相同字符组成的字符串,因为没有初始化随机数生成器C.49个随机字符组成的字符串D.什么都没有,因为$array不是数组4E.49个字母‘G’组成的字符串8.正确答案是C。从PHP4.2.0开始,除非已经给定了一个伪随机整数列,否则不再需要用srand()函数初始化随机数生成器。此外,即使随机数生成器没有被事先播种,脚本仍然会生成49个伪随机字符。尽管$array变量是字符串,但可以用访问数组的方式进行访问——使用数字索引访问某个位置上的字符。最后,for循环将从1开始执行到50,也就是执行了49次9.哪种语句结构用来表现以下条件判断最合适?if($a=='a'){somefunction();}elseif($a=='b'){anotherfunction();}elseif($a=='c'){dosomething();}else{donothing();}?A.没有default的switch语句B.一个递归函数C.while语句D.无法用别的形式表现该逻辑E.有default的switch语句9.用一系列的if…else语句来检查一个条件的代码块,最适合用switch语句来替代。switch($a){case'a':somefunction();break;case'b':10anotherfunction();break;case'c':dosomething();break;default:donothing();}?因为if语句中有一个捕捉所有其他条件的else,对应的,switch代码块需要一个default。正确答案是E。10.要修改每个元素的值,如何遍历$myarray数组最合适?$myarray=array(MyString,AnotherString,Hi,Mom!);?A.用for循环B.用foreach循环C.用while循环D.用do…while循环E.办不到!10.通常情况下,foreach语句是遍历数组的首选。但是,由于foreach语句是在数组的副本上进行操作,而我们需要给数组中每个元素重新赋值,所以在这里foreach就不适用了。尽管也可以用while循环和do…while循环,但由于数组是顺序索引的,最合适的语句还是for语句。因此答案是A。$myarray=array(MyString,AnotherString,Hi,Mom!);for($i=0;$icount($myarray);$i++){$myarray[$i].=($i);}?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($resultas$key=$val)B.while($idx*=2)C.for($idx=1;$idxSTOP_AT;$idx*=2)D.for($idx*=2;STOP_AT=$idx;$idx=0)E.while($idxSTOP_AT)do$idx*=211.由于题目只允许填写一行代码,唯一合适的是for循环,因此答案只能是C或者D。要选出能生成正确结果的for循环,我们必须先复习一下for循环的构成要素。PHP中,for循环是这样声明的:for(初始化;继续执行,直到;重复执行)初始化在循环开始时执行一次,然后for循环开始执行大括号内的代码,直到继续执行,直到的值为False。每完成一次循环,执行一次重复执行。因此,正确的代码块应该是:for($idx=1;$idxSTOP_AT;$idx*=2)答案是C。12.为用户定义函数is_leap()选择一个合适的函数声明。is_leap使用2000作为默认年份。/*函数声明处*/{$is_leap=(!($year%4)&&(($year%100)||!($year%400)));return$is_leap;}var_dump(is_leap(1987));/*Displaysfalse*/var_dump(is_leap());/*Displaystrue*/?A.functionis_leap($year=2000)B.is_leap($yeardefault2000)C.functionis_leap($yeardefault2000)6D.functionis_leap($year)E.functionis_leap(2000=$year)12.5个选项中,只有两个是合法的PHP函数声明(A和D)。在这两个选项中,只有一个设置了参数的默认值——答案是A。13.运行以下代码将显示什么值?假设代码运行时的URL是:testscript.php?c=25functionprocess($c,$d=25){global$e;$retval=$c+$d-$_GET['c']-$e;return$retval;}$e=10;echoprocess(5);?A.25B.-5C.10D.5E.013.本题考察PHP中变量作用域的相关知识。你必须明确global关键字是如何将变量引入本地域的,以及$_GET、$_POST、$_COOKIE、$_REQUEST等超级全局变量的作用域。本题中,最终的数学表达式是5+25-25-10,等于-5,答案是B。14.考虑如下代码:functionmyfunction($a,$b=true){if($a&&!$b){echoHello,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;/*GroupA*/$name=$s[?].$s[?].$s[?].$s[?].$s[?].$s[?];/*GroupB*/$name(${$s[?]},${$s[?]});?脚本中的每个问号(?)代表$s数组的一个数字索引。要想代码执行时显示Hello,World!字符串,该如何选择数字索引?A.GroupA:4,3,0,4,9,9GroupB:7,8B.GroupA:1,3,0,4,9,9GroupB:7,6C.GroupA:1,3,2,3,0,4GroupB:5,8D.GroupA:0,4,9,9,9,9GroupB:7,8E.GroupA:4,3,0,4,9,9GroupB:7,814.函数能被以一个包含着函数名的变量后面加上括号(以及必要的参数)的形式动态调用。对于GroupA来说,合适的索引组合是0,4,9,9,9,9,产生字符串myfunction。另