首页 > 代码库 > 整理的一些PHP面试题目

整理的一些PHP面试题目

1.strlen()和mb_strlen()的作用分别是什么?

strlen()和mb_strlen()的作用都是来获取字符串的长度,其中strlen()只针对单字节编码字符,也就是计算字符串的总字节数,如果是多字节编码,如gbk和utf8,使用strlen()获得的不是字符总数而是总字节数,可以使用mb_strlen来获取其字符的个数,使用mb_string要注意两点,一是要开启mbstring扩展,而是要指定字符集。

应用如下例

 2.include和require都能把一个文件包含到当前文件中,两者有什么区别?include和include_once区别呢?

include函数会将指定的文件读入并且执行里面的程序;

require函数会将目标文件的内容读入,并且把自己本身代换成这些读入的内容;

include与require除了在处理引入文件的方式不同外,最大的区别就是:include在引入不存文件时产生一个警告且脚本还会继续执行,而require则会导致一个致命性错误且脚本停止执行。include与require除了在处理引入文件的方式不同外,最大的区别就是:include在引入不存文件时产生一个警告且脚本还会继续执行,而require则会导致一个致命性错误且脚本停止执行。

include_once (require_once)语句在脚本执行期间包含并运行指定文件。此行为和 include (require)语句类似,区别是如果该文件中的代码已经被包含了,则不会再次包含,只会包含一次。include_once(require_once)需要查询一遍已加载的文件列表, 确认是否存在, 然后再加载。include_once 语句在脚本执行期间包含并运行指定文件。此行为和 include 语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含。如同此语句名字暗示的那样,只会包含一次;

3.POST和GET有什么区别?

 1. GET是从服务器上获取数据,POST是向服务器传送数据。
  2. GET是通过发送HTTP协议通过URl参数传递进行接收,而POST是实体数据,通过表单提交
  3. GET传送的数据量较小,不能大于2KB。POST传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
  4. GET安全性非常低,POST安全性较高。

4.foo()和@foo()之间有什么区别?

foo()会执行这个函数,任何解释错误,语法错误,执行错误都会在页面上显示出来。

@foo()在执行这个函数时,会隐藏上述的错误信息。

很多应用程序都会使用@mysql_connect()和@mysql_query来隐藏mysql的错误信息,这样不好,错误不应该被隐藏,应该妥善处理。

5.PHP中关于当前脚本,$_SERVER的有关信息。

客户端IP:$_SERVER["REMOTE_ADDR"]

服务器端IP:$_SERVER["SERVER_ADDR"]

获取当前脚本的执行路径:$_SERVER["SCRIPT_FILENAME"]或者__FILE__

当前脚本的名称:$_SERVER["PHP_SELF"]或者$_SERVER["SERIPT_NAME"]

链接到前一页的URL地址:$_SERVER["HTTP_REFERER"]

6.sort(),asort(),ksort(),arsort(),rsort()各有什么区别。

sort()对数组进行排序,当函数结束时数组单元将被从最低到最高重新安排。

rsort()对数组进行逆向排序。

asort()对数组进行排序并保持索引关系。

arsort()对数组进行逆向排序并保持索引关系。

ksort()对数组进行按照键名排序,保留键名到数据的关联,主要用于关联数组。

7.什么是可变变量?以下程序的输入值是什么?

获取一个普通变量的值作为这个可变变量的变量名。

以上程序输出:hotdogok

8.常量如何定义,如何检测一个常量是否被定义?

定义常量:define()

检测常量是否定义:defined(),例如

define("TEST","hello world");

if(defined("TEST")){

  echo TEST;

}

9.执行程序段<?php  echo 8%(-2) ?>,输出结果是:

%为取模运算,以上程序将输出0

$a%$b,其结果的正负取决于$a的符号。

echo ((-8)%3);     //将输出-2

echo (8%(-3));      //将输出2

10.echo count("abc")将会输出什么;

count()函数计算数组中的单元数目或者对象中的属性个数,通常是一个array(),对于对象,如果安装了 SPL,可以通过实现 Countable 接口来调用 count()。该接口只有一个方法count(),此方法返回count()函数的返回值。

如果参数不是数组型或者实现了countable接口的对象,将返回 1,只有一个例外,如果参数是NULL,则结果是 0。

11.PHP中单引号和双引号有什么区别?哪个速度更快?

单引号更快

单引号内的数据不会被解析(任何变量和特殊转义字符),所以速度更快,而双引号内的数据会被解析,如变量($var)值会代入字符串中,特殊转义字符也会被解析成特定的单个字。

双引号例如:

$name=‘hello‘;

echo "the $name";

会输出  the $name

如果是单引号

$name=‘hello‘

echo ‘the $name‘

会输出 the hello

12.简述GBK,GBK2312,BIG5,GB18030

GB2312支持的汉字较少,GBK是相比GB2312汉字更为丰富,包括全部的中日韩汉字,GB18030相比GBK增加了一些少数民族汉字汉字库更为多样,常人很少用,一般简体中文使用GBK而繁体中文使用BIG5

13.简述empty()函数的用法

bool empty($var)  如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""0"0"NULLFALSEarray()var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE

14.is_null()函数的用法?

检测变量是否为NULL,如果是null,则返回TRUE,否则返回FALSE。通常变量被认识是NULL有三种情况1.被赋值为NULL2.尚未被赋值3.被unset()。

15.接口与抽象类的区别是什么?

抽象类是不能被实例化的类,只能作为其他类的父类来使用,抽象类是通过关键字abstract来声明。

抽象类与普通类类似,都包含成员变量和成员方法,两者的区别在于,抽象类中至少包含一个抽象方法。

抽象方法没有方法体,该方法天生就是要被子类重写的。

抽象方法的格式为:abstr function abstractMethod()

接口是通过interface关键字来声明,接口中的成员常量和方法都是public的,方法可以不写关键字public。

接口中的方法也是没有方法体的,接口中的方法也是天生要被子类实现的。

抽象类和接口实现的功能十分相似,最大的不同是接口能实现多继承,在应用中选择抽象类还是接口要看具体实现。

子类继承抽象类使用extends,子类实现接口使用implements。

 

整理的一些PHP面试题目