我确信之前已经回答了这个问题,但我找不到这个确切案例的答案...... 我知道我可以使用usort函数,但无法弄清楚我想做什么的逻辑虽然它相对简单
我有一个生成动态区域:
$details[$pageYear][$pageMonth][] = array(
"id" => $page['id'],
"title" => $page['title']
);
我希望数组$details
最终按年份递减,然后按月递减
月份值是字符串(1月,2月,3月等......而不是数字),这似乎是我的主要问题(如何按实际订单而不是字母顺序对月份'字符串'进行排序)
任何帮助将不胜感激 对不起,如果这是重复的
答案 0 :(得分:3)
你可以使用这个回调吗?
<?php
function cmp_month_strings($a_string, $b_string)
{
$a_value = strtotime("{$a_string} 2000");
$b_value = strtotime("{$b_string} 2000");
if($a_value == $b_value)
return 0;
else if($a_value < $b_value)
return -1;
else
return 1;
}
?>
答案 1 :(得分:0)
要按键排序,您需要uksort 一些类似的方式:
uksort($details, function($a, $b) {
return ($a < $b) ? -1 : 1;
});
foreach ($details as &$year) {
uksort($year, function($a, $b) {
$montha = (int) date('m', strtotime("{$a} 1 2000"));
$monthb = (int) date('m', strtotime("{$b} 1 2000"));
return ($montha < $monthb) ? -1 : 1;
});
}