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面试总结的主要内容,如果未能解决你的问题,请参考以下文章