搜尋

首頁  >  問答  >  主體

如何在 laravel sql 中根據條件對數組進行排序以檢查最多 2 位數字

在我的回覆中我得到

[
    {
        "id": 480,
        "HSN": 4808,
    },
    {
        "id": 575,
        "HSN": 5702,
    },
    {
        "id": 638,
        "HSN": 6301,
    },
    {
        "id": 765,
        "HSN": 7317,
    },
    {
        "id": 6626,
        "HSN": 47071000,
    },
    {
        "id": 6727,
        "HSN": 48081000,
    },
    {
        "id": 6728,
        "HSN": 48084010,
    }
]

但我希望我的回覆以某種方式排序,它檢查 HSN(基於 HSN 的前 2 位數字)並給我這樣的結果

[
    {
        "id": 6626,
        "HSN": 47071000,
    },
    {
        "id": 480,
        "HSN": 4808,
    },
    {
        "id": 6727,
        "HSN": 48081000,
    },
    {
        "id": 6728,
        "HSN": 48084010,
    },
    {
        "id": 575,
        "HSN": 5702,
    },
    {
        "id": 638,
        "HSN": 6301,
    },
    {
        "id": 765,
        "HSN": 7317,
    }
]

我嘗試過 sortBy 、排序方法,但它似乎對我不起作用,或者我以錯誤的方式執行此操作。 幫助我以正確的方式得到它

P粉060112396P粉060112396461 天前500

全部回覆(1)我來回復

  • P粉450079266

    P粉4500792662023-09-09 10:42:03

    首先,您必須閱讀有關 usort 的文檔,並且strcmp

    $data = [
        [
            "id" => 480,
            "HSN" => 4808,
        ],
        [
            "id"=> 575,
            "HSN"=> 5702,
        ],
        [
            "id"=> 638,
            "HSN"=> 6301,
        ],
        [
            "id"=> 765,
            "HSN"=> 7317,
        ],
        [
            "id"=> 6626,
            "HSN"=> 47071000,
        ],
        [
            "id"=> 6727,
            "HSN"=> 48081000,
        ],
        [
            "id"=> 6728,
            "HSN"=> 48084010,
        ]
    ];
    
    usort($data, function($arr1, $arr2) {
        return strcmp($arr1['HSN'], $arr2['HSN']);
    });
    
    dd($data);

    關於usort和strcmp的解釋也許你必須閱讀文檔 以便更深入地了解它。

    回覆
    0
  • 取消回覆