我正在尝试对数组的子项进行排序,但失败了。.问题是,只有子项才应该通过其['date'] ['form_date']值(而不是第一层)进行排序/比较:(
Array
(
[0] => Array
(
[0] => Array
(
[date] => Array
(
[from_date] => 2018-07-07
[to_date] => 2018-07-07
)
[post] => Special: Pferdefotografie
)
[1] => Array
(
[date] => Array
(
[from_date] => 2018-07-21
[to_date] => 2018-07-21
)
[post] => Fotoexkursion Südafrika
)
[2] => Array
(
[date] => Array
(
[from_date] => 2018-07-21
[to_date] => 2018-07-21
)
[post] => Fotoexkursion Landschaftsfotografie
)
[3] => Array
(
[date] => Array
(
[from_date] => 2018-07-21
[to_date] => 2018-07-21
)
[post] => Bildaufbau und Komposition
)
[4] => Array
(
[date] => Array
(
[from_date] => 2018-07-22
[to_date] => 2018-07-22
)
[post] => Bildaufbau und Komposition
)
)
[1] => Array
(
[0] => Array
(
[date] => Array
(
[from_date] => 2018-08-11
[to_date] => 2018-08-11
)
[post] => Bildaufbau und Komposition
)
[1] => Array
(
[date] => Array
(
[from_date] => 2018-08-04
[to_date] => 2018-08-04
)
[post] => Makrofotografie 1
)
[2] => Array
(
[date] => Array
(
[from_date] => 2018-08-26
[to_date] => 2018-08-26
)
[post] => Tierfotografie 2
)
[3] => Array
(
[date] => Array
(
[from_date] => 2018-08-19
[to_date] => 2018-08-19
)
[post] => Tierfotografie 1
)
)
[2] => Array
(
[0] => Array
(
[date] => Array
(
[from_date] => 2018-09-15
[to_date] => 2018-09-15
)
[post] => Bildaufbau und Komposition
)
[1] => Array
(
[date] => Array
(
[from_date] => 2018-09-02
[to_date] => 2018-09-02
)
[post] => Makrofotografie 2
)
[2] => Array
(
[date] => Array
(
[from_date] => 2018-09-01
[to_date] => 2018-09-01
)
[post] => Makrofotografie 1
)
)
)
我尝试使用usort来比较日期,但是我猜想它由于嵌套级别而失败了??
usort($events, function ($a, $b) {
return strtotime($a[0]['date']['from_date']) - strtotime($b[0]['date']['from_date']);
});
非常感谢您的帮助!预先感谢您调查此:)
答案 0 :(得分:0)
因为您的日期为Y-m-d
格式,所以您无需费心将它们转换为时间戳,只需将它们作为字符串进行比较即可。正如deceze所说,您只需要迭代第一级并记住按引用进行修改(这样就不会修改数组的“副本”)。
代码:(演示:https://3v4l.org/AXsqR)
foreach ($array as &$set) {
usort($set, function ($a, $b) {
return strcmp($a['date']['from_date'], $b['date']['from_date']);
});
}