转载请注明出处,尊重原创:http://blog.csdn.net/a437629292/article/details/41014019,谢谢!
1. 选择合适的答案填入空白处
PHP 是一种______脚本语言,基于______引擎。PHP最常被用来开发动态的______内
容,此外,它同样还可被用来生成______(以及其他)文档。
A.动态,PHP,数据库,HTML
B.嵌入式,Zend,HTML,XML
C.基于 Perl 的,PHP,Web,静态
D.嵌入式,Zend,Docbook文档,MySQL
E.基于 Zend 的,PHP,图像,HTML
解析:这是一个理论基础题,稍微记了一下的都能打出来,
PHP 是一种嵌入式脚步语言,这肯定是啊,是不是经常在html代码里嵌入<? php ?>这样的代码?;
基于zend引擎这个没什么说的;后面的自己记吧;
正确答案是:B
2.以下哪种标签不是 PHP 起始/结束符?
A.<% %>
B.//
C.<?php ?>
D./* */
E.
解析:正确答案是:D
3.以下代码哪个不符合 PHP 语法?
A.$_10
B.${“MyVar”}
C.&$something
D.$10_somethings
E.$aVaR解析:这个简单,考得是变量的命名规则,
命名规则:
PHP 变量以一个美元符号为开头,后面跟上任意数量的数字、字母和下划线;
注:变量名不能以数字为开头
依据此规则:答案自然是:D
4.运行以下代码将显示什么?
define(myvalue, "10");
$myarray[10] = "Dog";
$myarray[] = "Human";
$myarray['myvalue'] = "Cat";
$myarray["Dog"] = "Cat";
print "The value is: ";
print $myarray[myvalue]."\n";
?>A.The Value is: Dog
B.The Value is: Cat
C.The Value is: Human
D.The Value is: 10
E.Dog解析:
我们先看打印语句:$myarray[myvalue],这里要注意:数组”[]“里没有加引号,这是一个陷阱,等你跳;
要注意,没有加引号,那么就是访问的第一句定义的常量了,也就是10,应该是$myarray[10],答案自然就是:A了
注:看题要仔细,千万小心这种陷阱
5. print()和echo()有什么区别?
A.print()能作为表达式的一部分,echo()不能
B.echo()能作为表达式的一部分,print()不能
C.echo()能在CLI(命令行)版本的 PHP 中使用,print()不能
D.print()能在CLI(命令行)版本的 PHP 中使用,echo()不能
E.没有区别:两个函数都打印文本!解析:
尽管 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.128
B.42
C.242.0
D.256
E.342解析:
这种依然先看打印语句:print $j;然后往上走,$j需要$i和$e的值,再往上走,$i需要$h和$c的值,以此类推,最后得出:
$h = 20-10+4+2=16;$i = 16 << 4 = 256(<<是左移运算符,相当于乘以 2的 N 次方),最后的答案乘以了一个浮点数,改变了它的数据类型。但是,由于小数点
后是零,因此输出的结果不包含小数部分,所以答案是:D
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解析:
这种输出问题,一般都是考你的细心程度,一个个变量代入,然后结果自然出来:D
8.以下脚本输出什么?
$array = '0123456789ABCDEFG';
$s = '';
for ($i = 1; $i < 50; $i++) {
$s .= $array[rand(0,strlen ($array) - 1)];
}
echo $s;
?>
A.50 个随机字符组成的字符串
B.49 个相同字符组成的字符串,因为没有初始化随机数生成器
C.49 个随机字符组成的字符串
D.什么都没有,因为$array 不是数组
E.49 个字母‘G’组成的字符串解析:
1. 看for循环里的代码:$i<50,从1开始,步伐为1,那就是循环49次;
2. 从 PHP4.2.0 开始,除非已经给定了一个伪随机整数列,否则不再需要用 srand()函数初始化随机数生成器。此外,即使随机数生成器没有被事先播种,脚本仍然会生成 49 个伪随机字符;
3. 尽管$array 变量是字符串,但可以用访问数组的方式进行访问——使用数字索引访问某个位置上的字符,这个如果怀疑,自己可以去定义一个字符串数组,然后数组形式打印即可验证。
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 语句解析:
毫无疑问,这一看题目和选项就知道肯定是switch了,至于怎么排除A,那么就请看:代码的最后一个else结尾,意思是其他的都走该代码块,自然使用switch时要用default来扑抓了。答案:E
10.要修改每个元素的值,如何遍历$myarray 数组最合适?
$myarray = array ("My String","AnotherString","Hi, Mom!");
?>
A.用 for 循环
B.用 foreach 循环
C.用 while 循环
D.用 do…while 循环
E.办不到!解析:
一看题目,遍历用哪个?那肯定while和do.. while就不合适了,数组是顺序索引的嘛,在看要求是要修改元素的值,当然就直接for拉,虽然foreach是遍历数组的首选,但是都是使用的数组的副本,所以要修改还是用for。答案:A
11.考虑如下代码片段:
define("STOP_AT", 1024);
$result = array();
/* 在此处填入代码 */
{
$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
解析:这种一大串代码没什么好害怕的,简单。
由于题目只允许填写一行代码,唯一合适的是 for 循环,因此答案只能是C或者 D。要选出能生成正确结果的 for循环,我们必须先复习一下 for循环的构成要素。PHP中,
for 循环是这样声明的:for(<初始化>;<继续执行,直到>;<重复执行>)<初始化>在循环开始时执行一次,然后 for 循环开始执行大括号内的代码,直到<继续
执行,直到>的值为 False。每完成一次循环,执行一次<重复执行>。因此,正确的代
码块应该是:C
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 default2000)
D.function is_leap($year)
E.function is_leap(2000 = $year)解析:
一眼一看,这函数申明只有AD两项没有问题,然后再看需求,要默认2000,那就直接A了
13.运行以下代码将显示什么值?假设代码运行时的 URL 是:testscript.php?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解析:
第一看打印代码:echo process(5);再代入process()函数,则在process中则是:$c = 5 , $retval = 5+25-25-10=-5;答案:B
注:URL中get方式传入c的值为25,process函数里定义$e为global,全局的,所以为10,代入即可出结果。
14. foo() 与 @foo() 有什么分别?
解析:
foo() 会执行这个函式,任何解译错误、语法错误、执行错误都会在页面上显示出来。
@foo() 在执行这个函式时,会隐藏所有上述的错误讯息。
很 多应用程式都使用 @mysql_connect() 和 @mysql_query 来隐藏 mysql 的错误讯息,我认为这是很严重的失误,因为错误不该被隐藏,你必须妥善处理它们,可能的话解决它们15. “===” 是什么?试举一个“==”是真但“===”是假的例子
解析:
在JS里也有这个===,===:不仅比较值是否相等,还比较类型是否相同,是值相等&类型相同;
而==的话,只是比较值是否相等。
要举例也简单:
$param = 1;
if($param === true){
echo '==';
}else{
echo "===";
}
输出:===
$param = 1;
if($param == true){
echo '==';
}else{
echo "===";
}
输出:==
16. 输出2014-05-16 10:50:02的前一天的时间,时间格式为:“2014-05-15 10:50:02”
解析:
$attr = mktime(10,50,2,5,16,2014);
$attr1 = $attr-60*60*24;
echo date('Y-m-d H:i:s',$attr1);
****注:如有其他面试题有疑问,可以在本文下评论,定会全力解答!