这是我拥有的数组:
Array
(
[02nd Apr-04th Apr] => Array
(
[facebook] => 0
[youtube] => 9
[timestamp] => 1491177600
)
[03rd Mar-05th Mar] => Array
(
[facebook] => 0
[youtube] => 0
[timestamp] => 1488672000
)
)
我想通过" timestamp"对此进行排序。值。所以预期的输出是:
Array
(
[03rd Mar-05th Mar] => Array
(
[facebook] => 0
[youtube] => 0
[timestamp] => 1488672000
)
[02nd Apr-04th Apr] => Array
(
[facebook] => 0
[youtube] => 9
[timestamp] => 1491177600
)
)
我做了什么:
usort($array, function($a, $b) {
if ($a['timestamp'] == $b['timestamp']) {
return 0;
}
return ($a['timestamp'] < $b['timestamp']) ? -1 : 1;
})
当我这样做时,排序工作但数组键丢失了。这是我得到的结果:
Array
(
[0] => Array
(
[facebook] => 0
[youtube] => 0
[timestamp] => 1488672000
)
[1] => Array
(
[facebook] => 0
[youtube] => 9
[timestamp] => 1491177600
)
)
答案 0 :(得分:2)
使用uasort
:
uasort($array, function($a, $b) {
if ($a['timestamp'] == $b['timestamp']) {
return 0;
}
return ($a['timestamp'] < $b['timestamp']) ? -1 : 1;
})
答案 1 :(得分:0)
usort无法保留密钥,请使用uasort替换它。你可以使用&lt; =&gt;简化比较功能。
uasort($array, function($a, $b) {
return ($a['timestamp'] <=> $b['timestamp']);
})