php - PHP 宇宙飞船运算符 <=> 如何精确地处理字符串?

标签 php php-7 string-comparison

我对字符串上宇宙飞船运算符的功能有点困惑。 在documentation他们说比较是根据PHP的常用类型comparison rules进行的但我还不清楚! 我看了这个stackoverflow question并做了一些测试,但仍然感到困惑。

这是我测试的代码:

<?php

$str1 = "aaa";
$str2 = "aaaa";

echo $str1 <=> $str2, PHP_EOL; // -1

$str1 = "baaaaaa";
$str2 = "abbb";

echo $str1 <=> $str2, PHP_EOL; // 1

$str1 = "aaaaaaa";
$str2 = "bbbb";

echo $str1 <=> $str2, PHP_EOL; // -1

它如何使用 ASCII 值?感谢您的帮助。

最佳答案

比较两个表达式。

For string it uses the ASCII values.

当第一个表达式分别小于、等于或大于第二个表达式时,返回-1、0或1。

// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
 
// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
 
// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
 
echo "a" <=> "aa"; // -1
echo "zz" <=> "aa"; // 1
 
// Arrays
echo [] <=> []; // 0
echo [1, 2, 3] <=> [1, 2, 3]; // 0
echo [1, 2, 3] <=> []; // 1
echo [1, 2, 3] <=> [1, 2, 1]; // 1
echo [1, 2, 3] <=> [1, 2, 4]; // -1
 
// 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
 
// not only values are compared; keys must match
$a = (object) ["a" => "b"]; 
$b = (object) ["b" => "b"]; 
echo $a <=> $b; // 1

关于php - PHP 宇宙飞船运算符 <=> 如何精确地处理字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63436761/

相关文章:

php - PHP 7 中的多线程

powershell - 如何比较本地PC和github上的文件?

php - 优化子串字谜比较算法

php - Laravel 5 无需密码登录

php - 如何在元素 View 中显示个人资料图片

PHP 从用户输入中删除 html 和 php 代码

php - 将连接字符串转换为单个字符串作为 php 中的变量

即使我安装了 PHP7 并将其添加为解释器,PhpStorm 项目仍在使用 PHP5

oauth-2.0 - php7 oauth非法内存分配

postgresql - 如何在postgresql中获得比给定字符大的最接近字符?