PHP 基础知识测试题 答案分析
1. LAMP具体结构不包含下面哪种(A )
A:Windows系统 如果是这个就是WMP
B:Apache服务器
C:MySQL数据库
D:PHP语言
2. 以下哪个SQL语句是正确的(D )
A:insert into users 少了一个values (‘p001’,’张三’,’男’);
B:create table (Code int primary key); 漏了一个表名
C:update users 少了一个set Code=’p002’ where Code=’p001’;
D:select Code as ‘代号’ from users;
3. 以下哪种类型是B/S架构的正确描述(C) B/S 浏览器
A:需要客户安装客户端 在浏览器上打开,并不需要安装客户端 C/S 客户端
B:不需要安装就可以使用 浏览器的一些程序也需要安装后在使用的 例如cms
C:依托浏览器的网络系统
D:不需要服务器的系统 每种程序都需要服务器
4 .php中哪个语句可以输出变量类型(C)
A:echo 输出字符串
B:print 输出字符串
C:var_dump() 输出类型 变量的值
D:print_r() 输出数组的 并没输出类型
5 .php定义变量正确的是( B )
A:var a = 5; JS定义方式
B: $a = 10;
C:int b = 6; 强类型语言定义方式 C## Java
D:var $a = 12; 前面不需要加var
6 .php中单引号和双引号包含字符串的区别正确的是(D)
A:单引号速度快,双引号速度慢
B:双引号速度快,单引号速度慢 A和B定义方式没有速度差别
C:单引号里面可以解析转义字符 单引号可以原样输出
D:双引号里面可以解析变量
7 .若x,y为整型数据,以下语句执行的$y结果为( B)
$x = 1; x定义等于1
++$x; x等于2了
$y =$x++; 先把x值附给y,在把x自加1所有等于2!!如果是++$x就是3
A:1 B:2 C:3 D:0
8 .php中关于字符串处理函数以下说法正确的是( C )
A:implode( )方法可以将字符串拆解为数组 应该用explode implode是合并 正好相反
B:str_replace()可以替换指定位置的字符串 查找替换把满足的全部替换 可以用substr_replace 这种是用来替换指定位置
C:substr( )可以截取字符串
D:strlen( )不能取到字符串的长度 可以获取长度
9 .以下代码运行结果为:(A )
<?php
$first = "This course is very easy !"; 定义了一个变量first=
$second = explode(" ",$first); 由定义了一个变量second=拆分字符串 用空格拆分的
$first = implode(",", $second); 将数字组合并了字符串
echo $first;
?>
A This,course,is,very,easy,! 把原来的空格变成了 ,
B This course is very easy !
C This course is very easy !,
D 提示错误
10 .以下程序横线处应该使用的函数为:( B ) 作用:把@符号前面的字符全部截掉
<?php
$email = ‘langwan@thizlinux.com.cn’;
$str = ____($email,‘@’);
$info = ____(‘.’,$str);
____($info);
?>
输出结果为:
Array ([0] => @thizlinux [1]=>com[2]=>cn) 输出结果是一个数组
A:strchr, split, var_dump 如果是这个的话就应该有类型,长度
B:strstr, explode, print_r strstr 也可以截取字符串,不常用
C:strstr,explode, echo
D:strchr, split, var,_dump
11、下列说法正确的是:(B) 如果不放在php里面那么ACD都是正确的
A. 数组的下标必须为数字,且从“0”开始 放强类型语言是对的
B. 数组的下标可以是字符串
C. 数组中的元素类型必顺一致 可以存储任意类型
D. 数组的下标必须是连续的 可以不连续
12、下面哪项描述是错误的?(A,C)
A. 父类的构造函数与析构函数不会自动被调用 都是自动调用的
B. 成员变量需要用public protected private修饰,在定义变量时不再需要var关键字
C. 父类中定义的静态成员,不可以在子类中直接调用 可以用
D. 包含抽象方法的类必须为抽象类,抽象类不能被实例化
13、关于exit( )与die( )的说法正确的是( C D)
A、当exit( )函数执行会停止执行下面的脚本,而die()无法做到 exit die都是终止程序
B、当die()函数执行会停止执行下面的脚本,而exit( )无法做到
C、die()函数等价于exit()函数
D、die()函数于exit()函数没有直接关系
例:
$a =10;
exit ();或者die();
echo $a;
变量a没有输出,说明程序走到exit退出了或者走到 die也退出了
它俩的区别:
$a =10;
echo"该程序出错了";
exit;
echo $a;
它会输出一个错误信息并且把程序终止掉
如果是
$a =10;
die("该程序出错了"); 可以给它参数,当执行到这的时候给出一个错误并且终止程序
echo $a;
14、下面程序运行结果( B )
<?php
$nextWeek = time() + (7 * 24 * 60 * 60);
先输出当前日期在输出下周日期, 格式化了一下
echo 'Now: '. date('Y-m-d') ."\n";
echo 'Next Week: '. date('Y-m-d', $nextWeek) ."\n";
?>
A、得到今天的日期(月-日)
B、得到今天的日期(年-月-日)与下周的日期(年-月-日)
C、得到现在的时间(小时-分-秒)
D、得到现在到下周的时间间隔
15、以下代码执行结果为:(D )
<?php
functionprint_A(){
$A = "phpchina";
echo "A值为: ".$A."<p>";
//return ($A); 如果注释去掉的话就选择C
}
$B = print_A(); 运行时会出错,因为没有返回值,是空的
echo "B值为: ".$B."<P>";
?>
A A值为:
B值为:
B A值为:
B值为: phpchina
C A值为: phpchina
B值为: phpchina
D A值为: phpchina
B值为:
16、以下代码执行结果为:( C )
<?php
$A="Hello ";
functionprint_A()
{
$A = "phpmysql !!";
global $A; global 全局变量 函数是独立的模块 $A外界定义的
echo $A;
}
echo $A;
print_A();
?>
A Hello
B phpmysql !!
C Hello Hello
D Hello phpmysql !!
17、以下代码输出的结果是(B ) 可变变量
$a = "aa";
$aa = "bb";
echo $$a;
A aa
B bb
C $aa
D $$a
18、以下代码输出的结果是(A )
<?php
$a = 10;
$b = &$a; 取a &代表取地址
echo $b; b也指向10
$b = 15;
echo $a;
?>
A 1015
B 1010
C 1515
D 1510
19、php输出拼接字符串正确的是( C )
A echo $a+”hello” php里不是用+
B echo $a+$b
C echo $a.”hello”
D echo ‘{$a}hello’ 错在用的是单引号,双引号就对了
20、在用浏览器查看网页时出现404错误可能的原因是 ( B ) 404 代表网页不存在没有找到文件 500页面错误
A 页面源代码错误
B 文件不存在
C 与数据库连接错误
D 权限不足
21、以下代码输出的结果为(D)
<?php
$attr = array("0"=>"aa","1"=>"bb","2"=>"cc"); 加了索引是关联数组
echo $attr[1];
?>
A 会报错!
B aa
C 输出为空
D bb 弱类型语言,可以自动转换
22、面向对象的三大特性中哪个不属于封装的做法(B )
A 将成员变为私有的
B 将成员变为公有的
C 封装方法来操作成员
D 使用__get()和__set()方法来操作成员
23、php的源码是(A ) 开源语言
A.开放的 B.封闭的 C.需购买的 D.完全不可见的
24、php如何输出反斜杠( D ) 转义字符
A.\n 代表换行 B.\r 代表换行 C.\t 代表制表符 D.\\
25、下列哪项不属于OOP的三大特性(B )
A:封装 B:重载 C:继承 D:多态
26、以下关于字符串的说法正确的是(C )
A:echo “hello\nworld”;在页面可以实现换行 在源代码里可以,在页面里不可以
B:echo ‘helloworld{$a}’;可以解析变量a的值 单引号不能解析
C:$str=<<<AA 定义字符串的第三种方法 $str=”” $str=’’
Hello world
AA;标识
该方式可以定义字符串
D:print $a,”hello”;可以输出数据不报错 print只能输出一个字符串,不能连续输出
27、下列说法不正确的是( D )
A:list()函数可以写在等号左侧 唯一可以写在等号左边的
B:each()函数可以返回数组里面的下一个元素 如果each第一次调的时候返回的第一个,把第一个当做下一个没有问题,如果 把第一个当做第一个就有问题
C:foreach()遍历数组的时候可以同时遍历出key和value
D:for循环能够遍历关联数组 不能遍历关联数组 只能遍历索引数组
28、关于面向对象的说法不正确的是(C )
A:OOP是面向对象的简称
B:静态成员是属于类的
C:普通成员是属于类的 属于对象的
D:类里面的$this关键字代表该对象本身
29、下列定义函数的方式是正确的( B )
A:public void Show(){ } 不是php里面的
B:function Show($a=5,$b){ } 给了个默认值
C:function Show(a,b){ } 变量前面加$符号
D:functionShow(int $a){ } 不需要加int
30、下面哪个选项没有将 john 添加到 users 数组中? ( B )
A. $users[] = "john";
B. array_add($users, "john"); php没有这种方法添加
C. array_push($users, "john");
D. $users [“aa”]= "john" ;
31、php中以下能输出1到10之间的随机数的是(C )
A:echo rand();
B:echorand()*10;
C:echo rand(1,10);
D:echorand(10);
32、php中以下能输出当前时间格式像:2016-5-6 13:10:56 的是(A )
A:echodate(“Y-m-d H:i:s”); date方法用来 格式化输出时间 括号里面写的是格式化字符串
B:echo time(); 直接输出时间戳了
C:echodate(); 方法会报错
D:echotime(“Y-m-d H:i:s”); time里面不能写双引号
33、以下哪项不属于函数的四要素( D ) 返回类型,函数名,参数列表,函数体
A:返回类型
B:函数名
C:参数列表
D:访问修饰符
34、以下说法正确的是(C )
A:@符号可以屏蔽所有错误
B:exit;后面的语句可以继续执行
C:10/4得出的结果是2.5 整数除以整数可以得出小数
D:$$a;这种写法是错误的
35、以下关于构造函数说法不正确的是( B )
A:研究一个类,首先我们要研究的函数是构造函数
B:构造函数construct写法和普通函数没有区别
写法特殊有区别
C:构造函数执行比较特殊
D:如果父类中存在构造函数并且需要参数,子类在造对象的时候也应该传入相应的参数。
36、以下关于多态的说法正确的是( D )
A:多态在每个对象调用方法时都会发生
B:多态是由于子类里面定义了不同的函数而产生的
C:多态的产生不需要条件
D:当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写,在父类引用调用相应的函数的时候表现出的不同称为多态。
37、以下代码在页面上会输出多少行数据(A )
$attr = array(1,2,3,4); 数组里面总共4个元素
while(list($key,$value) = each($attr)) each方法会把指针往下调,如果最后了就停止了while循环是进不来的,所以只能输出4行
{
echo $key."=>".$value."<br>";
}
while(list($key,$value) = each($attr))
{
echo $key."=>".$value."<br>";
}
A:4 B:6 C:8 D:12
38、以下说法正确的是(C )
A:$attr代表数组,那么数组长度可以通过$attr.length取到
B:unset()方法不能删除数组里面的某个元素 可以删除
C:php的数组里面可以存储任意类型的数据
D:php里面只有索引数组 还有关联数组
39、以下说法不正确的是( B )
A:模糊查询使用的关键字是like
B:排序查询asc是降序,desc是升序 反了
C:分页查询使用的关键字是limit
D:mysql如果只安装服务不安装界面也可以正常使用
40、以下代码输出的结果为(D ) 三目运算符
$a = "cc";
$cc = "dd";
echo $a=="cc"?"{$$a}":$a;
A:cc
B:$a
C:$$a
D:dd
1.php中布尔类型数据只有两个值:真和假。( 对 ) 逻辑的真和假
2.php中连接两个字符串的符号是“+ ”。( 错 ) 用的是 点 .
3.php可以使用“scanf”来打印输出结果。( 错 ) echo print
4.每个语句结尾都要加“;”来表示语句结束。 ( 对 )
5.php变量使用之前需要定义变量类型。( 错 ) 不需要 会根据后边的值自动确定类型
6.在php中“==”的意思是“等于”。( 对 ) 一个等号代表赋值,双等号代表等于
7.while和do-while语句都是先判断条件再执行循环体。( 错 ) while是先判断条件 do-while是先执行循环体再判断
8.“break ”代表的意思是跳出循环。( 对 ) continue是跳出当前这一次循环
9.若定义数组时省略关键字key,则第三个数组元素的关键字为3。( 错 ) 应该是2 定义数组时省略关键字key,说明定义了一个索引数组,索引数组里第三元素是2
10.mysql数据库中查询数据用select语句。( 对 )
1.B/S架构和C/S架构:
B/S架构是依托于浏览器的网络系统,C/S架构是基于客户端的。
B/S架构:
随着Internet和WWW的流行,以往的主机/终端和C/S都无法满足当前的全球网络开放、互连、信息随处可见和信息共享的新要求,于是就出现了B/S型模式,即浏览 器/服务器结构。它是C/S架构的一种改进,可以说属于三层C/S架构。主要是利用了不断成熟的WWW浏览器技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强并节约了开发成本,是一种全新的软件系统构造技术。第一层是浏览器,即客户端,由于客户不需要安装客户端,只要有浏览器就能上网浏览,所以它面向的是大范围的用户。第二层是WEB服务器。第三层是数据库服务器。
C/S架构:
C/S架构软件(Client/Server,即客户机/服务器模式)分为客户机和服务器两层,第一层是用户表示层,第二层是数据库层。C/S架构是一种比较早的软件架构,主要应用于局域网内。想要使用C/S架构的软件需要下载一个客户端,安装后就可以使用。
2.若x,y为整形数据,执行以下语句:
$x=1;
++$x;
$y=$x++;
则输出$y结果为:$y=2.
解释:
y=++x相当于:x=x+1,y=x
y=x++相当于:y=x,x=x+1
所以本题的意思是:
$x=1;
$x=$x+1;(这时$x=2,不需要赋值,直接进行自身的运算)
$y=$x;($y=2)
$x=$x+1;($x=3)
最终输出$y的结果为2。
3. exit()和die(),两者是等价的,遇到都会停止执行下面的脚本
4.
function print_A()
{
$A="phpchina";
echo "A的值为".$A."<p>";
//return $A;
}
$B=print_A();
echo "B的值为".$B."<p>";
输出$A,$B的结果为:$A=phpchina $B=
解释:
//return $A;此句被注释掉,所以print_A没有返回值,而$B=print_A();输出的是print_A的返回值,所以$B的值为空。
5.
以下代码的执行结果为:
$A="Hello ";
function print_A()
{
$A="php mysql!!";
global $A;
echo $A;
}
echo $A;
print_A();
输出结果为:Hello Hello
解释:
global为全局变量,引用时可以将方法外的变量值引入,所以global$A相当于$A="hello ";输出print_A()的值是"Hello "。
全局变量:
在程序设计中,全局变量是在所有作用域都可访问的变量,与之对应的是局部变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是从定义该变量的位置开始至源文件结束。在函数中使用全局变量,一般应作全局变量声明。 只有在函数内经过声明的全局变量才能使用。 但在一个函数之前定义的全局变量,在该函数内使用可不再加以声明。
6.
以下代码输出结果为:
$a="aa";
$aa="bb";
echo $$a;
输出结果为:bb
解释:
$a="aa",$$a=$aa="bb"。
7.
以下代码输出结果为:
$a=10;
$b=&$a;
echo $b;
$b=15;
echo $a;
输出结果为:1015
解释:
开始$b=$a=10,输出$b的值为10;后面$b=15,$b重新赋值,$a也重新赋值,所以$a=$b=15。
8. 在浏览器查看网页时出现404错误可能的原因是:文件不存在
9.
以下代码输出结果为:
$attr=array("0"=>"aa","1"=>"bb","2"=>"cc");
echo $attr[1];
输出结果为:bb
解释:
php是弱类型语言,可以自动转换
echo $attr[1];
echo $attr["1"];//两种方法都输出bb
10. php的源码是开放的
11. 下面哪个选项没有将john添加到users数组中:(B)
A.$users[]="join"; //没有指定下标的情况会自动生成
B.array_add($users,"join"); //没有这种方式
C.array_push($users,"join");
D.$users["aa"]="join";
12.php中能随机输出1-10随机数的是:rand(1,10);在数据库中是:rand()*10
13.
以下代码在页面上会输出多少行数据
$attr=array(1,2,3,4);
while(list($key,$value)=each($attr))
{
echo $key."=>".$value."<br>";
}
while(list($key,$value)=each($attr))
{
echo $key."=>".$value."<br>";
}
输出结果为:4行
解释:
第一个循环中each()函数已经运行到最后,在第二个循环中已无数据,所以一共输出4行
14. LAMP具体的结构包括:
LAMP:架构模式 L:Linux系统 A:阿帕奇服务器 M:Mysql数据库 P:
php语言
LAMP的特点:运行较快的,体积小,
WAMP:也是一种架构模式的Windows
15.SQL语句的写法:
创建表名:creat table 表名 (
Code int primary key,
列名 数据类型...(特别注意最后一列不加逗号)
);
添加:insert into 数据库名.表名
values(数据,按列顺序填充逗号隔开)
eg :insert into users values('p001','张三','男');
修改:update 表 set 列=新值,列=新值 where 条件
eg : update users set Code = 'p001' where Code =
'p002';
删除:delete form 表 where 条件
查询:select 结果显示列 form 表
where 条件
改名字:select Code as '代号' from users;
模糊查询使用关键字like;
排序查询asc是升序;desc是降序;
分页查询使用关键字limit;
mysql如果只安服务不安装界面也可以正常使用;
16. php中单引号和双引号包含字符串的区别:
双引号里面可以解析转义字符,单引号里面会原样输出;
双引号里面可以解析变量,单引号不可以;
17. implode()将数组拼接成字符串;explode()将字符串拆分成数组
str_replace("l","a",$str)查找替代,substr($str,6,5)截取字符串,substr_replace($str,"aaa",0,4)截取替代