总结PHP基础知识面试要点,记录下来背会面试很轻松。
isset()、empty()和is_null的区别
这三个函数在实际应用中很常见,也很容易混淆。三个函数都是检测变量的,那既然是检测变量还需要三个吗?
还真需要!isset()是判断变量是否设置并且不为null,empty()是判断变量是否为空,而is_null是判断变量是否为null。
当isset()给定一个参数时,不论他是一个空字符串,还是设置为true,还是数值为0,亦或者有值,isset()都会返回为真,为假的信号只有变量设置为null或者是没定义就会返回假。所以isset()函数表达式,应该是如果设置了值为真就是为真。这和empty()略有不同。
empty()是如果变量为空,或者是为0,null都是为空,只有给定变量的值,才会认定有值。
is_null()则是只判断变量是否为null,即使变量为空字符串,或者为0,或者为false都属于有值状态,只有null是无值状态。
include和require,以及include_once和require_once的区别
这三位函数都是PHP加载文件的函数,有时候一个PHP文件的内容是共用的,或者是为了好做分离,单独写成一个文件,如果需要就可以在相应的PHP文件中加载。
比如说所有的前端页面都需要一个共用的头部和尾部,中间的内容可以随意替换,那么在每个文件中只要用上面函数加载之前写过的头部和尾部文件,就不用重复开发了,减少工作量,还能使得代码看起来赶紧整洁。
既然都是加载文件作用的函数,那它们二位有什么区别呢?老生常谈,既然设置了,那就有对应的作用。
定义:include函数加载文件,如果出现错误,只会产生警告,并不会完全不执行;而require则会发生一个致命错误,致使文件脚本不再继续运行。
那如果上面二位大哥是这么个区别的话,看相应后面include_once和require_once的区别应该不大。
定义:once和one感觉差不多,所以include_once和require_once其实就是判断这类文件是否已经在当前文件中加载过了没,如果没有加载,如果有就不加载了。
相应的既然大家有所区别,作用的地方自然不一样了。include更多放在流程控制处,即使文件不存在,也不影响执行;require更多的放在头部,执行关键文件,确保程序的完整性和安全性。