PHP 7 详解
  • 介绍
  • PHP 7 安装
  • PHP 7.0.x 新特性
    • OOP 特性
      • 类型声明
      • 命名空间与use关键词批量声明
      • 匿名类
      • Throwable 接口
    • 新增操作符
      • 太空飞船操作符(<=>)
      • null 合并运算符(??)
    • 统一变量语法
    • 其他特性和变更
      • 常量数组
      • Switch 中的多个default默认值
      • Session_start 函数中的参数数组
      • Unserialize 函数引入过滤器
      • 整数除法函数 intdiv()
      • 补充*其他特性和变更
    • 补充*新函数
    • 补充*新的全局常量
    • 补充*变更的函数
    • 补充*摒弃一些老式的写法
    • 补充*不向后兼容的变更
    • 补充*在SAPI模块的变化
    • 补充*PHP7底层性能优化
  • PHP 7.1.x 新特性
    • 新特性
      • 可为空(Nullable)类型
      • 对称阵列解构
      • Void 函数
      • 类常量访问权限控制
      • 多异常捕获处理
      • list()现在支持键名
      • 支持为负的字符串偏移量
      • 补充*其他特性与变更
    • 补充*新的函数
    • 补充*新增的全局常量
    • 补充:不向后兼容的变更
    • 补充*废弃的特性
    • 补充*变更的函数
    • 补充*其他的变更
  • PHP7 开发工具
    • Eclipse 安装与配置
  • PHP 标准规范及开发技巧
    • PHP 标准规范 - PSR
    • PHP 开发技巧
    • 面向对象编程的基本原则
  • PHP7调试与性能分析
    • 调试 - Xdebug安装配置
      • 使用Eclipse调试
    • 性能分析 - Xhprof
    • 性能分析 - Vld
  • 附录*Ubuntu环境php开发配置
  • 附录*使用php开发扩展
  • 附录*浏览器插件
  • 附录*第三方类库
  • 附录*小问题整理
  • 附录*资料*工具
  • 附录*Composer
  • 附录*前端
  • 附录*进程
  • 附录*PHP的ticks机制
  • 附录* 通过composer发布自己的包
  • 附录*字符编码问题
  • 附录*注释
Powered by GitBook
On this page
  • 目录:
  • 简介:
  • 整型比较:
  • 字符串比较:
  • 数组比较:
  • 对象比较:
  • usort 场景示例:
  • 资料:

Was this helpful?

  1. PHP 7.0.x 新特性
  2. 新增操作符

太空飞船操作符(<=>)

目录:

  • 简介

  • 整型比较

  • 字符串比较

  • 数组比较

  • 资料

  • usort 场景示例

简介:

太空飞船操作符在比较变量时非常有用,这里说的变量包括标量类型(字符串型、整型、浮点型等)、,数组、对象。这个操作符相当于把三个比较符(== 、 < 、 >)融合成一个。

比如说使用场景可以用于 usort 、uasort 、uksort 的回调函数。具体使用规则如下:

  • 当符号两边相等时返回 0

  • 当符号右边大于符号左边时返回 -1

  • 当符号左边大于符号右边时返回 1

整型比较:

例子:

<?php
$intA = 1;
$intB = 2;
$intC = 1;

echo '整型比较:<br>';

echo $intA <=> $intC; // 返回 0
echo '<br>';

echo $intA <=> $intB; // 返回 -1
echo '<br>';

echo $intB <=> $intC; // 返回 1

执行结果:

整型比较:
0
-1
1

字符串比较:

例子:

<?php
echo '字符串比较:<br>';

echo 'PHP 7' <=> 'PHP 7'; //返回 0
echo '<br>';

echo 'a' <=> 'b'; // 返回 -1
echo '<br>';

echo 'z' <=> 'x'; // 返回 1

执行结果:

字符串比较:
0
-1
1

数组比较:

<?php
echo '数组比较:<br>';
echo [1,2,3] <=> [1,2,3]; // 0
echo "<br>";
echo [1,2,3] <=> [3,2,1]; // -1
echo "<br>";
echo [3,2,1] <=> [1,2,3]; // 1

执行结果:

数组比较:
0
-1
1

对象比较:

<?php
// Objects
$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 0
$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "c"]; 
echo $a <=> $b; // -1
$a = (object) ["a" => "c"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 1
$a = (object) ["a" => "b"]; 
$b = (object) ["b" => "b"]; 
echo $a <=> $b; // 0

usort 场景示例:

<?php
// 老的 if 方式比较
function normal_sort($a, $b) : int
{
    if($a == $b) {
        return 0;
    } elseif ($a < $b) {
        return -1;
    } else {
        return 1;
    }
}

// 新的太空飞船操作符比较
function space_sort($a, $b) : int
{
    return $a <=> $b;
}

$normalArray = [1,34,56,67,98,45];

usort($normalArray, 'normal_sort');

foreach($normalArray as $k => $v) {
    echo $k.' => '.$v.'<br>';
}

//SpaceShip example
$sarray = [1,34,56,67,98,45];

usort($sarray, 'space_sort');

foreach($sarray as $key => $value) {
    echo $key.' => '.$value.'<br>';
}

以上代码if条件判断比较的方式,采用太空操作符一行搞定!输出结果:

0 => 1
1 => 34
2 => 45
3 => 56
4 => 67
5 => 98
0 => 1
1 => 34
2 => 45
3 => 56
4 => 67
5 => 98

资料:

Previous新增操作符Nextnull 合并运算符(??)

Last updated 6 years ago

Was this helpful?

php官方wiki 太空飞船操作符示例