PHP面试题整理

  • PHP里单引号和双引号有啥区别?

  1. 单引号会把里面的内容当作纯文本处理,不会处理变量和转义字符,除了\\和\'。
  2. 双引号会对里面的内容进行解释。
  • echo、print_r、print、var_dump之间的区别?

  1. echo和print是php语句,只能打印简单类型的数据结构;print_r和var_dump是函数,可以打印复杂类型的数据结构;
  2. echo可以输出多个字符串,中间用逗号隔开,他是语言结构,没有返回值;
  3. print也是php的一个关键字,有返回值 只能打印出简单类型变量的值(如int,string),如果字符串显示成功则返回true,否则返回false;
  4. print_r 可以打印出复杂类型变量的值(如数组、对象)以列表的形式显示,并以array、object开头,但print_r输出布尔值和NULL的结果没有意义,因为都是打印"\n",因此var_dump()函数更适合调试;
  5. var_dump() 判断一个变量的类型和长度,并输出变量的数值;
  • 怎么获取客户端IP和服务端IP?

https://blog.csdn.net/chinawangfei/article/details/52900508

  •  include、require、include_once、require_one区别?

  1. include和require 都表示引入:把一个文件的代码镶嵌到相应的位置;
  2. 不同:

         a) 加载失败的处理方式不同。include :文件不存在(有错误)就会发出警告,不影响后面代码的执行;

                                                         require:文件不存在(有错误)就会发出fatal error,影响后代码执行;错误是致命的;

          b)  include有返回值,而require没有(可能因为如此require的速度比include快)。

          c)  引入时间不同

              require 通常放在php程序的最前面,php程序执行前,就会现代如require所指定的文件,把他变成PHP的一部分

              include 一般放在流程控制的处理部分,php在读到include的文件时,才会把他读进来,这种方式把程序执行时的流程简化

           3 _once 会自动判断文件是否已经引入,如果引入,不再重复执行.即:保证被包含文件只可能被引入一次.

  • PHP中传值与传引用的区别是什么?什么时候传值,什么时候传引用?

  1. 传值,$a = 9; $b = $a;表示$a复制了一个9给$b,改变a,不影响b的值;
  2. 传引用,$a = 9; $b = &$a;表示a,b指向 同一内存空间,改变a,b也会跟着改变
  • empty、isset的区别,什么情况使用empty什么时候使用isset?$a = 0; empty($a)返回什么?isset($a)返回什么?
  1. isset(),检测变量是否设置,且不是NULL;
  2. empty():判断变量是否为空;空的情况:“”(空字符串),0,0.0,“0”,NULL,false,array(),$var(声明了,但是没有值的变量==没被设置)
  3. 二者关系:主要在于NULL和空的区别~~~empty() <=> ! isset($var)|| $var != false;
  4. 值为NULL的情况:没有声明的变量;被赋值为null的变量;
  • PHP中获取数组里第一个元素有哪些方法?

  1. 索引方式:array[0]
  2. array_shift();//弹出数组第一个元素

    $a=array('new','hello','cool');

    $new=array_shift($a);

    $new是第一个元素值,取最后一个元素可以用array_pop(),这种操作会改变原数组的内容:array_slice();//截取数组

  3.  

    array_slice();//截取数组

    $a=array('new','hello','cool');$new=array_slice($a,1,1);第一个参数是数组,第二个参数是数组key位置,第三个是截取长度,类似于字符串截取substr(),对于数组key关联时,也可以使用这个方法

  4. current();//返回数组当前元素的值,初始情况下指向第一个元素,之后在foreach或者循环会变化,同时next()指向下一个元素,prev()指向上一个,reset()指向第一个,所以reset()也是一种方法,end()可以输出最后一个元素.

    举例:

    $a=array('new','hello','cool');

    $new=current($a,1,1);

  5. reset();//内容同第三个

    $a=array('new','hello','cool');

  6. array_values()//获取所有元素值返回一个索引数组

    $a=array('new','hello','cool');

    $b=array_values($a);

    $new=$b[0];

  • 如何修改session的生存时间?
  • . 如何给请求方返回一个404?
  • 在PHP中error_reporting函数的作用是什么?
  • 如何获取当前脚本的执行路径及参数数量和参数列表?
  •  mysql_fetch_row和mysql_fetch_array之间什么区别?
  •  PHP中cookie的用法是什么样的?添加字段、删除字段都有哪些方法?
  • 开发一个文件上传接口,我们应该注意哪些问题?回答比较混乱,关于安全方面回答进本没有考虑到
  • 一个PHP脚本默认最大执行时间是多少,如何修改其上限?
  •  PHP默认命令行参数都有哪些?说出其中5个即可
  • PHP引擎如何区分普通变量和引用变量?
  •  说说PHP垃圾回收机制?什么情况下容易产生内存泄露?垃圾回收中使用的函数有哪些?
  • PHP里的opcode是什么?
  •  PHP中反射是怎么回事?
  •  PHP生命周期

你可能感兴趣的:(PHP)