【发布时间】:2021-12-29 18:33:52
【问题描述】:
我有一个多维数组,我正在尝试按 3 个字母的月份缩写进行排序,这是我尝试过的:
数组:
$shipping_chart_month =
[
{
"name": "8:00 AM",
"data": [
{
"x": "May",
"y": 37
},
{
"x": "Nov",
"y": 32
},
{
"x": "Apr",
"y": 1
},
{
"x": "Aug",
"y": 45
},
{
"x": "Sep",
"y": 19
},
{
"x": "Jul",
"y": 13
},
{
"x": "Oct",
"y": 43
},
{
"x": "Jun",
"y": 31
},
{
"x": "Feb",
"y": 0
},
{
"x": "Jan",
"y": 0
},
{
"x": "Mar",
"y": 0
}
]
},
{
"name": "9:00 AM",
"data": [
{
"x": "Apr",
"y": 26
},
{
"x": "Oct",
"y": 84
},
{
"x": "Sep",
"y": 35
},
{
"x": "Jul",
"y": 26
},
{
"x": "Feb",
"y": 6
},
{
"x": "Nov",
"y": 96
},
{
"x": "Mar",
"y": 10
},
{
"x": "May",
"y": 50
},
{
"x": "Aug",
"y": 66
},
{
"x": "Jun",
"y": 36
},
{
"x": "Jan",
"y": 0
}
]
}
]
我正在尝试按月对每个子 data 数组进行排序。这是我尝试过的,但它似乎没有任何影响,并且停留在从这里去哪里:
foreach ($shipping_chart_month as $data) {
$months = [];
foreach ($data['data'] as $month) {
$months[] = $month['x'];
}
usort($months, function ($x, $y) {
$months = array('Jan' => 1, 'Feb' => 2, 'Mar' => 3, 'Apr' => 4, 'May' => 5, 'Jun' => 6, 'Jul' => 7, 'Aug' => 8, 'Sep' => 9, 'Oct' => 10, 'Nov' => 11, 'Dec' => 12);
if ($months[$x] == $months[$y]) {
return 0;
}
return ($months[$x] > $months[$y]) ? 1 : -1;
});
}
【问题讨论】:
-
这个问题看起来与your previous one 非常相似。你从那里的答案中学到了什么?
-
@KIKOSoftware 将一些缺失值添加到数组中,我不想事后在一篇文章中提出多个单独的问题。但是,是的,我尝试了许多 usort 函数,但似乎无法获得它
-
那不是一个有效的 php 数组。
-
另外:你期待什么?您的代码只会在新数组中收集月份别名。
-
@cottton 抱歉,我刚刚从我的 IDE 中复制了返回的输出。但是,是的,我想我不完全理解 usort 如何将新排序的值添加回原始数组。