php面试总结

Posted haix技术交流

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php面试总结相关的知识,希望对你有一定的参考价值。

1.引用变量考察点

1.1 php引用变量的定义方式

概念:

    在php中引用意味着用不同的名字访问同一个变量内容。

定义方式:

    &符号

$a = range(0,100);

$b = $a;

$b不会开辟新的空间,而是让$b指向同一个内存空间

$a = range(0,1000);

说明$a 又重新指向新的内存空间

var_dump(memory_get_usage()); //查看内存空间

1.2 zval结构体 变量容器

//zval 变量容器 需要安装debug扩展

$a = range(0,3);

xdebug_debug_zval('a');

a:(refcount  = 1,is_ref=0)=aray(0=>(refcount=1,is_ref=0)=0,1=>(refcount1=1,is_ref=0)=1,2=>(refcount=1,is_ref=0)=2,3=>(refcount=1,is_ref=0)=3)

refcount 代表有一个内存空间在指向,is_ref代表引用 0就是false 如果$b=&$a is_ref=1

//unset 只会取消引用 ,不会销毁空间

$a = 1;

$b = &$a;

unset($b);

echo $a;   //内存空间不会销毁,只会取消$b对内存空间的引用

对象本身就是引用传递

class Persion{

    public $name = "zhang";

}

$p1      = new Persion;

$p2 = $p1;

$p2->name = "lisi";

两个指向同一个内存空间,$p1会发生改变,所以对象复制要使用clone

<?php

  $data = ['a','b','c'];

  foreach($data as $key = >$val)

  {

      $val = &$data[$key];

  }

  [a,b,c]

  [b,b,c]

  [b,c,c]

  [b,c,c]

 2.常量及数据类型

 php中字符串的定义方式

 单引号,双引号,heredoc和newdoc

 单引号不解析变量,不解析转义字符,只能解析单引号和反斜线本身 

 变量和变量,变量和字符串,字符串和字符串之间用.连接

 单引号的效率要高于双引号 

 双引号可以解析变量,变量可以用特殊字符号{}包含,双引号可以解析所有的转义字符,也可以用.连接

 heredoc类似于双引号,newdoc类似于单引号

 布尔类型判断为false的七种情况

  0,0.0,'','0',false,array(),NULL

   

  超全局数组

  $GLOBALS,$_GET,$_POST,$_REQUEST,$_SESSION,$_COOKIE,$_SERVER,$_FILES,$_ENV

  $_SERVER['SERVER_NAME'] 服务器名称

  $_SERVER['HTTP_REFERER'] 上级请求页面

  $_SERVER['HTTP_USER_AGENT'] 头信息

  $_SERVER['REQUEST_URI'] 请求的uri

  NULL 的三种情况

  直接赋值给一个NULL ,未定义的变量,unset销毁的变量

  常量的定义方式 const define

  const更快 是语言结构 ,define是函数

  define不能用户定义类常量的定义,const可以

  预定义常量

  __FINE__,返回文件的路径名

  __LINE__,返回行号

  __DIR__,__,所在目录

  __FUNCTION__,所在函数体的函数名称

  __CLASS__,类名

  __TRATIT__,

  __METHOD__,类名加方法名

  __NAMEESPACE__返回namespace名称



以上是关于php面试总结的主要内容,如果未能解决你的问题,请参考以下文章

360 php 面试总结

PHP 面试归纳总结

PHP面试总结

php专业面试总结

php面试总结

滴滴2019年php高级研发工程师面试题总结