PHP - 基础 - 运算符

错误控制符@

PHP的运算符的错误控制符@

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

PHP所有运算符

运算符的优先级

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

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

比较运算符

  • =====的区别

    • ==: 比较值是否相等
    • ===: 比较值和类型是否相等
  • 等值判断(FALSE的七种情况)

  • 示例:

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    if ("==false" && false) {// 非空串为 true
    echo '1';
    } elseif ('0' == 0) { // '0' 空字符串0等于 false and 0 等于 false
    echo '2';
    } elseif (0.0 == 0) { // '0.0' 字符串0.0等于 false and 0 等于 false
    echo '3';
    }

递增/递减运算符

  • 递增/递减运算符不影响布尔值
  • 递减 NULL 值没有效果
  • 递增NULL(NULL++) 值为1
  • 递增和递减在前就先运算符后返回,反之就先返回,后运算(++i, i++)

逻辑运算符

  • 短路作用
  • || 和 && 与 or 和 and 的优先级不同

逻辑运算符优先级

重点:

  • 递增/递减运算符的运算规则
  • 逻辑运算符的短路效果
  • 逻辑运算符多考虑优先级问题

问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
/**
* 下列程序中请写出打印输出的结果
* <?php
* $a = 0;
* $b = 0;
* if ($a = 3 > 0 || $b = 3 > 0)
* {
* $a++;
* $b++;
* echo $a. "\n";
* echo $b. "\n";
* }
*/
$a = 0;
$b = 0;

if ($a = 3 > 0 || $b = 3 > 0)
{
// $a = true; $b=0;
$a++; // true 递增,还是 true
$b++; // 0 递增,等于1
echo $a. "\n";
echo $b. "\n";
}
1
2
3
4
5
6
7
8
9
10
// 1: 3 > 0 == true
$a = true || $b = 3 > 0
// 2: 3 > 0 == true
$a = true || $b = true
// 3: $a = true == true
$a = true || $b = true
// 4: true || $b == true
$a = true
// 5: $a = true == true
true

图解