加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php太空飞船操作符究竟如何比较字符串,数组和对象

发布时间:2020-12-13 14:14:40 所属栏目:PHP教程 来源:网络整理
导读:我想知道php太空飞船操作符如何比较字符串,对象和数组.例如,下面的代码. echo "Its Me at SO" = "Its Me at SO"; 将返回0,因为我知道所有字符都相同,计数是相同的.但如果我有如下代码: echo "Its me at SO" = "its Me at so"; 它将返回1,意味着左侧大于右侧
我想知道php太空飞船操作符如何比较字符串,对象和数组.例如,下面的代码.
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,3];

但是下面的代码返回-1

echo [1,3] <=> [3,1];

我不明白为什么?此运算符如何比较数组以及它如何计算左边的数组小于右边的数组?
这些对象也是如此.

任何人都可以详细解答它如何与字符串,数组和对象一起使用?

谢谢

“根据PHP的通常类型比较规则( http://php.net/manual/en/types.comparisons.php)进行比较”.

1)是的,它使用ASCII值

2)如果数组的长度不同,则值较小的数组较小.

否则,它按键比较数组,给“早期”值优先.例如,首先将$arr1 [0]与$arr2 [0]进行比较.如果$arr1具有$arr2中不存在的键,则数组不具有可比性(例如,如果我们使用非数字数组).

// Arrays are compared like this with standard comparison operators
// $arr1 and $arr2 are arrays
function standard_array_compare($arr1,$arr2)
{
   // If either array has more values,that array is considered "larger"
    if (count($arr1) < count($arr2)) {
        return -1; // $arr1 < $arr2
    } elseif (count($arr1) > count($arr2)) {
        return 1; // $arr1 > $arr2
    }

    //Otherwise compare the array values directly
    foreach ($arr1 as $key => $val) {
        if (!array_key_exists($key,$arr2)) {
            return null; // uncomparable,these arrays do not have the same keys
        } elseif ($val < $arr2[$key]) {
            return -1; // $arr1 < $arr2
        } elseif ($val > $arr2[$key]) {
            return 1; // $arr1 > $arr2
        }
    }
    return 0; // $arr1 == $arr2
}

注意,上面不是PHP的实际代码,只是所用逻辑的近似表示.

从本质上讲,它以类似的方式处理数组以比较大端数.它将$arr1 [0]与$arr2 [0]进行比较.如果它们是不同的,则返回-1或1,具体取决于哪个更大.如果它们相同则转移到$arr1 [1]和$arr2 [1].如果所有值都相同则返回0(数组相等)

虽然不完全相同,但考虑[1,3]< =>可能更简单. [3,1]基本等同于123 = 3. 321 …

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读