前言
本系列文章主要是根据实战视频《360大牛:全面解读PHP面试》学习过程中记录的学习笔记,期间也会加入查找资料和平时学习中学习到的知识。
错误控制符
php支持一个错误运算符:@。当将其放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都将被忽略掉。
<?php
error_reporting(-1);
var_dump($afdsdafs); //输出 Notice: Undefined variable: afdsdafs in /usercode/file.php on line 4 NULL
@var_dump($afdsdafs); //输出 NULL
运算符优先级
递增/递减 >逻辑非(!) > 算术运算符(先乘除取模,后加减) > 大小比较 > (不)相等比较 > 引用(&) > 位运算符(^) >位运算符(|) > 逻辑与(&&) > 逻辑或(||) > 三目(?:) > 赋值(=) > and > xor > or
括号的使用可以增加代码的可读性,推荐使用。
== 和=== 的区别
==用于判断值是否相等,===用于判断值和类型是否相同。
<?php
$i = 1;
$j = '1';
if ($i == $j) {
echo 'i等于j'.PHP_EOL; // i等于j
} else {
echo 'i不等于j'.PHP_EOL;
}
if ($i === $j) {
echo 'i等于j'.PHP_EOL;
} else {
echo 'i不等于j'.PHP_EOL; //i不等于j
}
等值判断
0, 0.0, '', '0', false, array() , NULL (整型0、浮点0.0、布尔false、空字符串、0字符串、空数组、NULL)
视频中说道,(FALSE的七种情况都是等值的)。经过代码实测,该说法不完全正确:
<?php
var_dump(array() == false); //为true
var_dump(array() == null); //为true
var_dump(array() == array()); //为true
var_dump(array() == 0); //为false 或者说数组与上述除外的其他情况比较都为false
var_dump(array() == 0.0); //为false
var_dump(array() == '0'); //为false
var_dump(array() == ''); //为false
递增/递减运算符
①对布尔值进行递增/递减操作不改变其原来的布尔值:
true++ true-- ++true --true false++ false-- ++false --false 布尔值不变
②递减NULL值没有效果;递增NULL值为1。
<?php
$a;
$b;
$test1 = ++$a;
$test2 = --$b;
var_dump($test1); //int(1)
var_dump($test2); //NULL
③递增和递减在前就先运算后返回,反之就先返回,后运算。
④++i 比 i++效率高,后加会产生一个临时变量用于保存i的值。
逻辑运算符
短路作用
|| 和 && 与 or 和 and 的优先级不同
解题方法
重点记忆递增/递减运算符的运算规则,逻辑运算符的短路效果,在看到逻辑运算符要多考虑优先级的问题。