按二维数组的其中一列对它进行排序

问题描述 投票:0回答:3
[
    1 => ['id' => 1, 'sort' => 1],
    3 => ['id' => 3, 'sort' => 3],
    2 => ['id' => 2, 'sort' => 2],
]

如何对其进行排序,以便使用内部“排序”键重新排序? 期望的结果:

[
    1 => ['id' => 1, 'sort' => 1],
    2 => ['id' => 2, 'sort' => 2],
    3 => ['id' => 3, 'sort' => 3],
]
php arrays sorting multidimensional-array
3个回答
19
投票

您可以将

usort
与此比较功能一起使用:

function cmpBySort($a, $b) {
    return $a['sort'] - $b['sort'];
}
usort($arr, 'cmpBySort');

或者您使用

array_multisort
以及附加的键值数组来排序:

$keys = array_map(function($val) { return $val['sort']; }, $arr);
array_multisort($keys, $arr);

这里

array_map
匿名函数 用于构建 sort 值的数组,用于对数组值本身进行排序。这样做的好处是,每对值都需要调用 np 比较函数。


4
投票

类似这样的:

usort($array, function (array $a, array $b) { return $a["sort"] - $b["sort"]; });

0
投票

类似这样的:

uasort($array, 'compfunc');

function compfunc($a, $b)
{
    return $a['sort'] - $b['sort'];
}
© www.soinside.com 2019 - 2024. All rights reserved.