【PHP常见面试题 PHP基础-运算符】foo()和 @foo()之间的区别

一. 运算符考点

1. PHP的 运算符错误控制符@的使用及其作用

PHP支持一个错误控制符:@。当将其放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉。

2. 延伸:PHP所有运算符考点

1) PHP运算符优先级

递增/递减 > ! > 算术运算符 > 大小比较 > (不)相等比较 > 引用 > 位运算符(^) > 位运算符(|) > 逻辑与 > 逻辑或 > 三目 > 赋值 > and > xor > or

注:括号的使用可以增加代码可读性,推荐使用

2) 比较运算符:=====的区别

1) == 比较值是否相等;=== 比较值是否相等,类型是否相同。
2) 等值判断(FALSE的七种情况)
    if ('== false') {
        echo '';
    } elseif ('0' == 0) {
        echo '';
    } elseif (0.0 == 0) {
        echo '';
    }
注:FALSE的七种情况都满足: 0 / 0.0 / '0' / '' / array() / null / false

3) 递增/递减运算符

1) 递增/递减运算符不影响布尔值;
	true++; // true
	true--; // true
	false++ ; // false
	false--; // false
2) 递减NULL值没有效果;递增NULL值为1;
	NULL--; // NULL
	NULL++; // 1
3) 递增和递减在前,就先运算,后返回;反之就先返回,后运算

4) 逻辑运算符

① 短路作用
$a = true || $b == 3; // 前面是 true,后面不会执行【|| : 一真为真】
$b = false && $a == 1; // 前面是 false,后面不会执行【&&:一假为假】
||&&orand 的优先级不同
// 先执行 false || true,得到 true,再赋值给 $a
$a = false || true; // $a = true;

// 先执行 $b = false,整体为 true,则 $b的值为 false
$b = false or true; // $b = false;

二. 解题方法

重点记忆:递增/递减运算符的运算规则,逻辑运算符的 短路效果,在看到逻辑运算符要多考虑 优先级 问题。


三. 真题

下列程序中,请写出打印输出的结果:
$a = 0;
$b = 0;

if ($a = 3 > 0 || $b = 3 > 0) {
    $a++;
    $b++;
    echo $a."\n"; 
    echo $b."\n"; 
}

分析:

1)优先级问题:(从大到小)
	>
	||
	=
2)执行顺序
	3 > 0; 					// true
	(3>0) || $b = 3 > 0;	// true ($b = 3 > 0 不执行)
	$a = true;
	$b = 0;
3) 递增运算
	$a++; // $a = true; true++; => true
	$b++; // $b = 0; 0++; => 1

运算结果:

$a = true;
$b = 1;

猜你喜欢

转载自blog.csdn.net/studyphp123/article/details/83450873