PHP支持所有标准的算术运算符,用于执行数学计算。
<?php
$a = 10;
$b = 3;
echo $a + $b; // 加法: 13
echo $a - $b; // 减法: 7
echo $a * $b; // 乘法: 30
echo $a / $b; // 除法: 3.333...
echo $a % $b; // 取模(余数): 1
echo $a ** $b; // 幂运算: 1000 (10的3次方)
// 负数运算
echo -$a; // 取负: -10
// 自增自减
$x = 5;
echo ++$x; // 前置自增: 6
echo $x++; // 后置自增: 6(返回后再加)
echo --$x; // 前置自减: 6
echo $x--; // 后置自减: 6(返回后再减)
?>
<?php
$x = 10;
$x += 5; // 等同于 $x = $x + 5; 结果: 15
$x -= 3; // 等同于 $x = $x - 3; 结果: 12
$x *= 2; // 等同于 $x = $x * 2; 结果: 24
$x /= 4; // 等同于 $x = $x / 4; 结果: 6
$x %= 4; // 等同于 $x = $x % 4; 结果: 2
$x **= 3; // 等同于 $x = $x ** 3; 结果: 8
// 字符串连接赋值
$str = "Hello";
$str .= " World"; // 结果: "Hello World"
?>
比较运算符用于比较两个值,返回布尔值(true或false)。
<?php
$x = 5;
$y = "5";
$z = 10;
// == 值相等(类型转换后比较)
var_dump($x == $y); // bool(true) - 值相等
var_dump($x == $z); // bool(false)
// === 全等(值和类型都相等)
var_dump($x === $y); // bool(false) - 类型不同
var_dump($x === 5); // bool(true) - 值和类型都相同
// != 或 <> 不等于
var_dump($x != $y); // bool(false)
var_dump($x <> $z); // bool(true)
// !== 不全等
var_dump($x !== $y); // bool(true) - 类型不同
var_dump($x !== 5); // bool(false)
?>
<?php
$a = 10;
$b = 5;
var_dump($a > $b); // bool(true) - 大于
var_dump($a < $b); // bool(false) - 小于
var_dump($a >= 10); // bool(true) - 大于等于
var_dump($a <= 5); // bool(false) - 小于等于
// 太空船运算符(PHP 7+)
echo $a <=> $b; // 1 (a > b)
echo $b <=> $a; // -1 (b < a)
echo $a <=> 10; // 0 (a == 10)
?>
逻辑运算符用于组合多个条件判断。
<?php
$a = true;
$b = false;
$x = 10;
$y = 5;
// && 和 and(逻辑与)
var_dump($a && $b); // bool(false)
var_dump($x > 5 && $y < 10); // bool(true)
// || 和 or(逻辑或)
var_dump($a || $b); // bool(true)
var_dump($x < 5 || $y > 10); // bool(false)
// ! 逻辑非
var_dump(!$a); // bool(false)
var_dump(!$b); // bool(true)
// xor(异或)
var_dump($a xor $b); // bool(true) - 一个true一个false
var_dump($a xor $a); // bool(false) - 两个都true
?>
<?php
$first = "Hello";
$last = "World";
// . 连接运算符
$full = $first . " " . $last; // "Hello World"
echo "PHP" . " " . "编程"; // "PHP 编程"
// .= 连接赋值运算符
$message = "Hello";
$message .= " ";
$message .= "World";
echo $message; // "Hello World"
// 字符串与数字连接
$text = "价格: " . 99.99; // "价格: 99.99"
$count = "数量: " . 5; // "数量: 5"
?>
<?php
$age = 20;
// 基本三元运算符
$status = ($age >= 18) ? "成年" : "未成年";
echo $status; // "成年"
// 嵌套三元运算符
$level = ($age < 13) ? "儿童" : (($age < 18) ? "青少年" : "成年");
// 简写形式(省略中间部分)
$username = $_GET['name'] ?: "游客";
// null合并运算符(PHP 7+)
$username = $_GET['name'] ?? "游客";
?>
<?php
$a = ["a" => "苹果", "b" => "香蕉"];
$b = ["c" => "橙子", "d" => "梨"];
// + 联合
$result = $a + $b;
print_r($result);
// == 相等
var_dump($a == $b); // bool(false)
// === 全等
var_dump($a === $a); // bool(true)
?>
++ -- 自增自减! 逻辑非* / % 乘除取模+ - . 加减连接< <= > >= 比较== != === !== 相等性&& 逻辑与|| 逻辑或? : 三元运算符= += -= 赋值<?php
// 使用括号明确优先级
$result = (5 + 3) * 2; // 16
$result = 5 + 3 * 2; // 11
$result = 10 > 5 && 3 < 7; // true
$result = (10 > 5) && (3 < 7); // 更易读
?>
=== 而不是 == 避免类型转换问题?? 处理未定义变量== 和 === 的区别?? 处理表单默认值