算术运算符
加减乘除取余,整除
<?php
$x=13;
$y=2;
echo ($x+$y);//加:15
echo "\n";
echo ($x-$y);//减:11
echo "\n";
echo ($x*$y);//乘:26
echo "\n";
echo ($x/$y);//除:6.5
echo "\n";
echo ($x%$y);//取余:1
echo "\n";
var_dump(intdiv(10, 3));//整除运算符intdiv():int(3)
?>
赋值运算符
左操作数被设置为右侧表达式的值
<?php
$x=10;
echo $x;//10
echo "\n";
$y=20;
echo $y +=100;//120
echo "\n";
$z=50;
echo $z -=30;//20
echo "\n";
$i=5;
echo $i *=6;//30
echo "\n";
$j=10;
echo $j /=5;//2
echo "\n";
$k=15;
echo $k /=4;//3
echo "\n";
?>
运算符组合实例
<?php
$a = "Hello";
$b = $a . " world!";
echo $b; // 输出Hello world!
$x="Hello";
$x .= " world!";
echo $x; // 输出Hello world!
?>
PHP递增/递减运算符
<?php
$x=10;
echo ++$x; // 先加1,后返回值,输出11
$y=10;
echo $y++; // 先输出,后加,所以输出10
$z=5;
echo --$z; // 先减掉1,才输出的是4
$i=5;
echo $i--; // 先输出,后面再减所以是5
?>
PHP比较运算符
<?php
$x=100;
$y="100";
var_dump($x == $y);//等于,输出true
echo "\n";
var_dump($x === $y);//绝对等于,输出false
echo "\n";
var_dump($x != $y);//不等于,输出false
echo "\n";
var_dump($x !== $y);绝对不等于,输出true
echo "\n";
$a=50;
$b=90;
var_dump($a > $b);//false
echo "\n";
var_dump($a < $b);//true
?>
PHP逻辑运算符
<?php
$x = array("a" => "red", "b" => "green");
$y = array("c" => "blue", "d" => "yellow");
$z = $x + $y; // $x 和 $y 数组合并
var_dump($z);//输出
/*array(4) {
["a"]=>
string(3) "red"
["b"]=>
string(5) "green"
["c"]=>
string(4) "blue"
["d"]=>
string(6) "yellow"
}*/
var_dump($x == $y);//输出false
var_dump($x === $y);//恒等,输出false
var_dump($x != $y);//不等于,输出true
var_dump($x <> $y);//不相等,输出true
var_dump($x !== $y);//绝对不等于,输出true
?>
三元运算符
语法格式:(expr1) ? (expr2) : (expr3)
PHP_EOL 是一个换行符,兼容更大平台。
如果有返回 $_GET['user'],否则返回 nobody:
<?php
$test = 'syshao';
// 普通写法
$username = isset($test) ? $test : 'nobody';
echo $username, PHP_EOL;//输出syshao
// PHP 5.3+ 版本写法
$username = $test ?: 'nobody';
echo $username, PHP_EOL;//输出syshao
?>
在 PHP7+ 版本多了一个 NULL 合并运算符 ??
<?php
// 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值
$username = $_GET['user'] ?? 'nobody';
// 类似的三元运算符
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
?>
组合比较符(PHP7+)
<?php
// 整型
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// 浮点型
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// 字符串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?>
运算符优先级
<?php
// 优先级: && > = > and
// 优先级: || > = > or
$a = 3;
$b = false;
$c = $a or $b;
var_dump($c);// 这里的 $c 为 int 值3,而不是 boolean 值 true,输出int(3)
$d = $a || $b;
var_dump($d);//这里的 $d 就是 boolean 值 true,输出true
?>
括号优先运算符
<?php
// 括号优先运算
$a = 1;
$b = 2;
$c = 3;
$d = $a + $b * $c;
echo $d;
echo "\n";
$e = ($a + $b) * $c; // 使用括号
echo $e;
echo "\n";
?>