php基础,面试整理

1)PHP引用变量的概念和定义方式

概念:在php中引用用不同的变量名称访问同一个变量内容

定义方式:使用&

延伸:php的cow机制,copy on write 当将a变量赋值给b变量的时候,并不会给b变量开辟内存空间,,只有当b变量进行修改之后才会给b变量开辟内存空间

使用xdebug_debug_zval('a') 可以打印出变量a在内存中的存储树结构,refcount表示变量被使用的次数,is_ref表示是否是引用

2)php字符串的三种定义方式及各自的区别

三种定义方式:1单引号,2双引号,3heredoc,nowdoc

区别,单引号不能解析变量,不能解析转义字符,除了单引号本身和反斜线,,单引号的效率比双引号的效率要高,可以用点链接字符串与字符串,以及字符串与变量,可读性也比较高,推荐使用。双引号可以解析变量和转义字符,变量可以用{}和其他字符隔开,效率较单引号低,heredoc类似双引号,nowdoc类似单引号,两者可以用来处理大文本定义方式

//heredoc 
$str = >>>EOT
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should print a capital 'A': \x41
EOT;

//nowdoc
$str = >>>'EOT'
I am printing some
This should print a capital 
EOT;

延伸:主要考察数据类型
1)浮点类型不能运用到比较运算之中
2)转换成bool时,0,0.0,'0',false,array(),null都表示false
3)数组类型中,超全局数组有,$_GET,$_POST,$COOKIE,$_REQUEST,$_SESSION,$_SERVER,$_FILES,$_ENV共八个
4)null有三种情况,赋值为NULL,未定义的变量,unset销毁的变量
5)常量的定义,const,define,,const更快是语言结构,define是函数,const可以用于类常量的定义,而define不可以,,常量一经定义不能被修改不能被删除
6)预定义常量 :__FILE__,__LINE__,__DIR__,__FUNCTION__,__CLASS__,__TRAIT__,__METHOD__,__NAMESPACE__共8个

 

3)运算符的各种考点 

1.运算符的优先级问题

递增,递减 > ! >算数运算符 > 大小比较运算符 > (不)相等比较  > 引用 > 位运算符(^)  >位运算符(|) > 逻辑与 >逻辑或 >三目运算符 > 赋值运算符 > and > xor > or
2)递增递减运算符 ++ --
递增递减运算符不影响bool值
null递增等于1,null递减没有效果
递增递减在前就先运算后返回,,返回则先返回后运算

 4)php遍历数组的三种方式

 1)使用for循环  只能遍历索引数组
2)使用foreach循环 可以遍历索引和关联数组 ,遍历是会reset数组指针
3)使用 while list() 和each()组合循环,可以遍历索引和关联数组,需要注意的是不会对数组进行reset()操作

5)PHP的分支结构 

 1)if ...elseif ..... else
2) switch .... case
区别:和if不同的是switch后面的空置表达式的数据类型只能是,整形浮点型和字符串,,if可以任意数据类型,,在switch语句中continue的作用和break是一样的,,想要跳出switch外的循环可以使用continue2
switch....case会生成跳转表,,直接跳转到case,,,所以在比较复杂或者和多次循环的条件分支中用switch..case性能会比if ..else高

6)PHP的变量的作用域

 1)大部分的变量只有一个单独的范围,这个单独的范围跨度同样包含了include和require引入的文件 global关键字,$GLOBALS及其他超全局数组
2)static静态变量,仅初始化一次,初始化时需要赋值,否则为null,每次执行函数该值会保留,static修饰的变量是局部的仅在函数内有效,一般可以用来记录函数的调用次数,从而在某些条件下终止递归。
3)关于函数的返回值,可以返回包括数组和对象的任意值,返回语句会终止函数执行,将控制权交会函数调用处,省略return,返回值为null,,不可有多个返回值
4)函数的引用返回,,从函数返回一个引用,必须在函数声明和指派返回值给一个变量是都使用引用运算符&
5)include/require语句包含运行指定文件,,如果给出路径名按照路径来找,否则从include_path中查找,如果include_path中也没有则从调用脚本文件所在目录和当前工作目录中寻找,,当一个文件被包含时其中所包含的代码继承了include所在行的变量范围,,,当文件未找到时候,include结构会报出一个警告,代码继续执行,,require会报致命错误代码终止

6)正则表达式相关

 正则表达式的作用:分割,查找,匹配,替换字符串
分隔符:正斜线(/),hash符号(#),以及取反符号(~)
通用原子:\d、\D 、 \w 、\W 、\s、\S
元字符:. * ? ^ + {n} {n,} {n,m} [] () [^] | [-]
模式修正符: i m e s U x A D u
一般主要考点是考,,正则的后向引用和贪婪模式
php中的几个正则相关的函数preg_match(),preg_match_all(),preg_replace(),preg_split()

7)文件相关的

文件相关的一般记住php的一些文件相关的函数
1)文件读写相关:fopen(),以指定的模式打开文件,,模式有 r/r+ w/w+ a/a+ x/x+ b,y
     读取函数,fread(),fgets(),fgetc()  关闭fclose()
     不需要fopen的打开函数 file_get_contents(),file_put_contents()  其他的有file(),readfile()
     访问远程文件,,开启allow_url_fopen,HTTP协议连接只能使用只读,FTP协议可以使用只读或者只写
2)目录操作函数
     名称相关:basename(),dirname(),pathinfo()
     目录读取:opendir(),readdir(),closedir(),rewinddir()
     目录删除:rmdir()
     目录创建:mkdir()
3) 其他常用函数
    文件大小:filesize()
    目录大小:disk_free_space(),disk_total_space()
    文件拷贝:copy()
    删除文件:unlink()
    文件类型:filetype()
   重命名文件或者目录:rename()
   文件截取:ftruncate()
   文件属性:file_exists(),is_readable(),is_writable(),is_executable(),filectime(),fileatime(),filemtime()
   文件锁:flock()
   文件指针:ftell(),fseek(),rewind()

你可能感兴趣的:(php基础,面试整理)