douyun1972 2017-06-27 20:06

# 按PHP中的值对多维关联数组进行排序

I have this set of array:

``````Array(
[day_1] => Array(
[3744] => Array(
[time_start] => 11:00
[time_end] => 12:00
[notes] =>
)
[3746] => Array(
[time_start] => 08:00
[time_end] => 11:00
[notes] =>
)
[532] => Array(
[time_start] => 09:00
[time_end] => 11:30
[notes] =>
)
)
[day_2] => Array(
[3747] => Array(
[time_start] => 08:00
[time_end] => 10:00
[notes] =>
)
)
)
``````

How do I sort the array in "day_1" based on the value of "time_start"?

The end result that I want to achieve is:

``````Array(
[day_1] => Array(
[3746] => Array(
[time_start] => 08:00
[time_end] => 11:00
[notes] =>
)
[532] => Array(
[time_start] => 09:00
[time_end] => 11:30
[notes] =>
)
[3744] => Array(
[time_start] => 11:00
[time_end] => 12:00
[notes] =>
)
)
[day_2] => Array(
[3747] => Array(
[time_start] => 08:00
[time_end] => 10:00
[notes] =>
)
)
)
``````

I have tried:

``````foreach(\$array['day_1'] as \$key => \$value){
\$starttime[\$key] = strtotime(\$value['time_start']);
}
array_multisort(\$starttime, SORT_ASC, \$array['day_1']);
``````

But its not sorted and it removes my array key as well.

• 写回答

#### 1条回答默认 最新

• doukuanyong1939 2017-06-27 20:21
关注

The solution using uasort function:

``````// \$arr is your initial array
uasort(\$arr['day_1'], function(\$a, \$b){
return strcmp(\$a['time_start'], \$b['time_start']);
});

print_r(\$arr);
``````

Demo link

本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

#### 悬赏问题

• ¥15 WebSocket的问题
• ¥15 WebSocket的问题
• ¥15 centos上启动kylin后网页报错404
• ¥20 使用hackrf进行信号收发时接收到的信号幅度太小
• ¥15 WebSocket的问题
• ¥15 BDSBAS-B1C和B1C信号有什么不同
• ¥15 在半圆平面内随机生成点坐标
• ¥15 系统容量变化的几种多址方式TDMA, CDMA,FDMA,OFDMA 对比，应该给的是一个曲线 图，随着系统容量的增加，几种多址方式性能的对比 图,MATLAB程序仿真折线图
• ¥15 用visual Studio 写c ++只运行上一个旧代码的运行结果是怎么回事
• ¥15 系统容量变化的几种多址方式（TDMA，FDMA，OFDMA，CDMA）对比（相关搜索：曲线图）