【发布时间】:2016-01-15 12:56:12
【问题描述】:
我想知道 php spaceship 运算符如何比较字符串、对象和数组。例如,下面的代码。
echo "Its Me at SO" <=> "Its Me at SO";
将返回 0,因为我知道所有字符都相同,计数相同。但如果我有如下代码:
echo "Its me at SO" <=> "its Me at so";
它会返回1,表示左边大于右边,但是如何呢?它是在比较 ASCII 值吗?
现在让我们来看看数组。下面的代码将返回 0,因为两个数组的计数、值和每个索引处的值都相等。
echo [1,2,3] <=> [1,2,3];
但是下面的代码返回-1
echo [1,2,3] <=> [3,2,1];
我不明白为什么?该运算符如何比较数组以及如何计算左侧数组小于右侧数组? 对象也是如此。
谁能详细回答它如何处理字符串、数组和对象?
谢谢
【问题讨论】:
-
它将以与比较运算符相同的方式进行相等/不等式检查。因此,它将以与其他运算符和数组或其他任何内容相同的方式比较字符串。 Spaceship 只是一个“包装器”,仍然在下面使用相同的逻辑
-
“
echo "Its Me at SO" <=> "its Me at SO";将返回 0”。对我来说不是:它返回 1,这是我所期望的,因为“i”大于“I”。你真的为此得到 0 分吗? -
对不起,这是我这边的拼写错误。更新了我的答案。