太空船操作符()自 php 7.0 引入,php 7.3 中行为未变,用于三路比较并返回-1/0/1,支持标量及数组比较,不支持对象和资源,常用于 usort 等排序回调。

在 PHP 7.3 中,太空船操作符()的行为与 PHP 7.0 引入时完全一致,并未发生变更。它不是“仅在 7.3 中可用”,而是自 PHP 7.0 起就已支持,7.3 只是继续兼容并稳定使用它。
太空船操作符的作用
它是一个三路比较运算符,用于同时判断两个值的大小关系,返回整数:
- 如果左操作数小于右操作数,返回 -1
- 如果两者相等,返回 0
- 如果左操作数大于右操作数,返回 1
它会自动处理类型转换(按 PHP 的常规比较规则),比如数字与字符串、null 与数字等,但不触发严格类型警告(不同于 ===)。
常见使用场景:数组排序(usort/usort)
最典型的用途是配合 usort()、uasort() 等函数实现简洁的自定义排序逻辑:
$fruits = [
['name' => 'banana', 'weight' => 120],
['name' => 'apple', 'weight' => 80],
['name' => 'orange', 'weight' => 150]
];
usort($fruits, function($a, $b) {
return $a['weight'] $b['weight']; // 按 weight 升序
});
// 结果:apple(80), banana(120), orange(150)
支持的数据类型与注意事项
太空船操作符适用于大多数标量和可比较结构:
- 支持整数、浮点数、字符串、null、布尔值(true/false 视为 1/0)
- 数组之间也可比较(按元素顺序逐个递归比较)
- 对象之间不能直接使用(除非实现了
__compare()—— 但 PHP 并不提供该魔术方法;实际中需自行定义逻辑) - 资源(resource)不可用,会报
Fatal error
注意:字符串比较默认是字节级(非 Unicode 意识),如需多语言安全排序,应改用 Collator::compare() 等 ICU 方法。
替代 if-else 的简洁写法
相比传统三元嵌套或 if 分支,它让比较逻辑更紧凑:
// 传统方式 if ($a $b;
尤其适合在回调、闭包、箭头函数(PHP 7.4+)中快速表达顺序意图。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











