Hou*_*oun 3 php string-comparison php-7
我对字符串上的宇宙飞船运算符的功能有点困惑。在文档中,他们说比较是根据 PHP 通常的类型比较规则进行的,但我还不清楚!我看了这个stackoverflow 问题并做了一些测试,但仍然很困惑。
这是我测试的代码:
<?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
Run Code Online (Sandbox Code Playgroud)
它如何使用 ASCII 值?谢谢你的帮助。
比较两个表达式。
对于字符串,它使用 ASCII 值。
当第一个表达式分别小于、等于或大于第二个表达式时,它返回 -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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1588 次 |
| 最近记录: |