From 969f95eed095e8284826d6e00c94736e932f7e1c Mon Sep 17 00:00:00 2001 From: kingofzihua Date: Thu, 11 Jan 2024 10:55:51 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20Collection=20order=20=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E4=B8=8D=E7=AC=A6=E5=90=88=E9=A2=84=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix: Collection order error order 方法中最终使用 uasort 来进行排序 uasort 需要 0 1 -1 来表示顺序,旧代码中只有 0 1 ### example: ```php $data = [ ['id' => 30, 'name' => '30'], ['id' => 29, 'name' => '29'], ['id' => 28, 'name' => '28'], ['id' => 27, 'name' => '27'], ['id' => 26, 'name' => '26'], ['id' => 25, 'name' => '25'], ['id' => 24, 'name' => '24'], ['id' => 23, 'name' => '23'], ]; $res = collect($data)->order('id'); echo "
";

       print_r($res->values()->toArray());
```
### old:
```html
Array
(
    [0] => Array
        (
            [id] => 23
            [name] => 23
        )

    [1] => Array
        (
            [id] => 25
            [name] => 25
        )

    [2] => Array
        (
            [id] => 24
            [name] => 24
        )

    [3] => Array
        (
            [id] => 26
            [name] => 26
        )

    [4] => Array
        (
            [id] => 27
            [name] => 27
        )

    [5] => Array
        (
            [id] => 28
            [name] => 28
        )

    [6] => Array
        (
            [id] => 29
            [name] => 29
        )

    [7] => Array
        (
            [id] => 30
            [name] => 30
        )

)
```
### new:
```html
Array
(
    [0] => Array
        (
            [id] => 23
            [name] => 23
        )

    [1] => Array
        (
            [id] => 24
            [name] => 24
        )

    [2] => Array
        (
            [id] => 25
            [name] => 25
        )

    [3] => Array
        (
            [id] => 26
            [name] => 26
        )

    [4] => Array
        (
            [id] => 27
            [name] => 27
        )

    [5] => Array
        (
            [id] => 28
            [name] => 28
        )

    [6] => Array
        (
            [id] => 29
            [name] => 29
        )

    [7] => Array
        (
            [id] => 30
            [name] => 30
        )

)
```
---
 src/Collection.php | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/Collection.php b/src/Collection.php
index 9d84e1a..ec1b894 100644
--- a/src/Collection.php
+++ b/src/Collection.php
@@ -526,7 +526,10 @@ public function order(string $field, string $order = 'asc')
             $fieldA = $a[$field] ?? null;
             $fieldB = $b[$field] ?? null;
 
-            return 'desc' == strtolower($order) ? intval($fieldB > $fieldA) : intval($fieldA > $fieldB);
+            if ($fieldA == $fieldB) return 0;
+
+            // 可以使用 <==> 简化,但是需要 php7.4 +
+            return 'desc' == strtolower($order) ? intval($fieldB > $fieldA ? 1 : -1) : intval($fieldA > $fieldB ? 1 : -1);
         });
     }
 

From 2c38f677931fc38d0b06b5dc29cbdaf4f539c2b0 Mon Sep 17 00:00:00 2001
From: kingofzihua 
Date: Thu, 11 Jan 2024 11:02:17 +0800
Subject: [PATCH 2/2] =?UTF-8?q?doc:=20=E4=BF=AE=E6=94=B9=E6=B3=A8=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/Collection.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/Collection.php b/src/Collection.php
index ec1b894..6f5d5f1 100644
--- a/src/Collection.php
+++ b/src/Collection.php
@@ -528,7 +528,7 @@ public function order(string $field, string $order = 'asc')
 
             if ($fieldA == $fieldB) return 0;
 
-            // 可以使用 <==> 简化,但是需要 php7.4 +
+            // 可以使用 <=> 简化,但是需要 php7.4 +
             return 'desc' == strtolower($order) ? intval($fieldB > $fieldA ? 1 : -1) : intval($fieldA > $fieldB ? 1 : -1);
         });
     }