如何在按另一個鍵排序之前按鍵對 PHP 數組進行分組?

賈誇爾

我有一個包含關鍵的數組counted,並placement對此我之前我想分組排序。數組應首先按 排序counted,然後對於每個重複項counted,應按 排序placement

$array = [
    [
        'id' => 1,
        'placement' => 8,
        'counted' => 3
        'user' => ['name' => 'foo'],
    ],
    [
        'id' => 2,
        'placement' => 5,
        'counted' => 3
        'user' => ['name' => 'bar'],
    ],
    [
        'id' => 3,
        'placement' => 1,
        'counted' => 2
        'user' => ['name' => 'foobar'],
    ]
];

我在這裡的預期輸出是:

$array = [
    [
        'id' => 2,
        'placement' => 5,
        'counted' => 3
        'user' => ['name' => 'bar'],
    ],
    [
        'id' => 1,
        'placement' => 8,
        'counted' => 3
        'user' => ['name' => 'foo'],
    ],
    [
        'id' => 3,
        'placement' => 1,
        'counted' => 2
        'user' => ['name' => 'foobar'],
    ]
];

我試圖usort實現這一目標:

usort($array, fn($a, $b) => ((int)$a['placement'] <=> (int)$b['counted']) * -1);

但這給了我一個意想不到的結果。我嘗試的一切似乎都不起作用,任何想法將不勝感激。

洪範

因為你更喜歡使用 usort 所以這是我的答案

$array = [
    [
        'id' => 1,
        'placement' => 8,
        'counted' => 3,
        'user' => ['name' => 'foo'],
    ],
    [
        'id' => 2,
        'placement' => 5,
        'counted' => 3,
        'user' => ['name' => 'bar'],
    ],
    [
        'id' => 3,
        'placement' => 1,
        'counted' => 2,
        'user' => ['name' => 'foobar'],
    ]
];


usort($array, function ($a, $b) {
    if ($a['counted'] < $b['counted']) {
        return 1;
    }

    if ($a['counted'] === $b['counted'] && $a['placement'] > $b['placement']) {
        return 1;
    }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

PHP中基於一致數組鍵對多維數組進行排序

使用 Array.reduce() 按多個鍵對數組進行分組

PHP中根據兩個條件對多個關聯數組進行分組和排序

按特定鍵對嵌套數組數據進行分組

按字符串php對多個數組進行排序

按另一個對像數組對對像數組進行排序

如何以與使用 php 創建數組的相反順序對數組進行排序?

按第一個字母對數組進行分組 - 使用 groupBy 方法 (Lodash)

按列值對數據進行分組

如何在javascript中按array.objectProperty對數組項進行分組?

如何在js中對數組中的數據進行分組

按部分鍵對json數據進行分組

按升序/降序對分組數組進行排序

如何按某些屬性值對對像數組進行分組

如何對對像數組進行分組和計數

如何根據特定函數對數組進行分組?

如何在 JS 中按鍵對值進行分組和連接

JS:按順序對數組的一部分進行排序

Python - 基於排名信息對數組進行分組(聚類/排序)

Postgres:按公共元素對數組進行分組

JSONata(或 JS) - 對 JSON 數組/對象進行分組和求和

按隨機鍵對多維數組進行排序

如何在python中對二維數組中的連續數據進行分組

將多維 php 數組重組為另一個多維數組,其中第一個元素可以用作數組鍵

如何使用單個數組對兩個或多個數組進行排序?

像計算機上的文件名一樣按鍵對關聯數組進行排序

如何通過對數據進行分組來返回唯一的行

按降序對數組的數字進行排序

如何將這個特定的對像數組映射到按公共鍵值分組的數組