我有一个类似的多维数组:

array ([0] => array ([id] => 1 [name] => john doe [title] => Mr [days] => 10) 
[1] => array ([id] => 2 [name] => Joe Smith [title] => Dr [days] => 22) 
[2] => array ([id] => 3 [name] => John Jones [title] => Mr [days] => 3))

我需要对内部阵列进行排序,以便以自然顺序返回几天密钥。

即喜欢这样:

array ([2] => array ([id] => 3 [name] => John Jones [title] => Mr [days] => 3)
[0] => array ([id] => 1 [name] => john doe [title] => Mr [days] => 10) 
[1] => array ([id] => 2 [name] => Joe Smith [title] => Dr [days] => 22))

我认为我需要的是一个函数,该函数将NATSORT应用于$键的多维数组,但是到目前为止,我还找不到除标准排序以外其他任何其他功能。

有帮助吗?

有帮助吗?

解决方案

你想要什么 用户.

您可以编写回调为您进行比较:

usort($data, function($a, $b) {
    return ($a['days'] > $b['days'])
           ? 1 
           : ($a['days'] < $b['days'])
             ? -1 
             : 0;
});

免责声明:您需要PHP 5.3.x才能正常工作,否则您必须诉诸 create_function 或预先定义比较函数。

其他提示

有点不同的方法:

$days = array();
foreach($array as $key => $val) {
    $days[$key] = $val['days'];
}
array_multisort($days, $array); //$array being your input array

结果:

Array
(
    [0] => Array
        (
            [id] => 3
            [name] => Jay Doe
            [title] => Mr
            [days] => 3
        )

    [1] => Array
        (
            [id] => 1
            [name] => John Doe
            [title] => Mr
            [days] => 10
        )

    [2] => Array
        (
            [id] => 2
            [name] => Joe Doe
            [title] => Mr
            [days] => 22
        )

)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top