<返回目录     Powered by claud/xia兄

第3课: 运算符与表达式

算术运算符

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)
?>

运算符优先级

从高到低的优先级:
  1. ++ -- 自增自减
  2. ! 逻辑非
  3. * / % 乘除取模
  4. + - . 加减连接
  5. < <= > >= 比较
  6. == != === !== 相等性
  7. && 逻辑与
  8. || 逻辑或
  9. ? : 三元运算符
  10. = += -= 赋值

优先级示例

<?php
// 使用括号明确优先级
$result = (5 + 3) * 2;      // 16
$result = 5 + 3 * 2;        // 11

$result = 10 > 5 && 3 < 7;  // true
$result = (10 > 5) && (3 < 7);  // 更易读
?>
最佳实践:

实践练习

  1. 算术计算:编写程序计算圆的面积和周长
  2. 比较运算:比较 ===== 的区别
  3. 逻辑判断:判断一个年份是否为闰年
  4. 三元运算符:实现成绩等级判断
  5. 字符串操作:拼接用户的姓名和问候语
  6. 运算符优先级:计算复杂表达式
  7. null合并:使用 ?? 处理表单默认值
  8. 自增自减:理解前置和后置的区别