我已经检查过SOF的所有地方,但无法找到它的解决方案。我有来自mysql的month
和year
这样的日期。我的sql查询使用的日期格式如DATE_FORMAT( month, '%m %Y' )
[0] => Array
(
[month] => 12 2016
[bundle_Price] => 6000
)
[1] => Array
(
[month] => 07 2017
[bundle_Price] => 1200
)
这是我的排序功能..
$MyResult = Company::Sorting($Result,'month');
public static function vpbxSorting_2($a,$subkey) {
foreach($a as $k=>$v) {
$b[$k] = strtolower($v[$subkey]);
}
asort($b, 1);
foreach($b as $key=>$val) {
$c[] = $a[$key];
}
return $c;
}
它让我像这样排序不正确..
print_r($MyResult );
排序如下:
Array
(
[0] => Array
(
[month] => 01 2017
[bundle_Price] => 1200
)
[1] => Array
(
[month] => 02 2017
[bundle_Price] => 7200
)
[2] => Array
(
[month] => 04 2017
[bundle_Price] => 1200
)
[3] => Array
(
[month] => 04 2016
[bundle_Price] => 7200
)
[4] => Array
(
[month] => 05 2017
[bundle_Price] => 1200
)
[5] => Array
(
[month] => 05 2016
[bundle_Price] => 13200
)
[6] => Array
(
[month] => 06 2017
[bundle_Price] => 9600
)
[7] => Array
(
[month] => 06 2016
[bundle_Price] => 6000
)
[8] => Array
(
[month] => 07 2017
[bundle_Price] => 14400
)
[9] => Array
(
[month] => 07 2016
[bundle_Price] => 6000
)
[10] => Array
(
[month] => 08 2017
[bundle_Price] => 1200
)
[11] => Array
(
[month] => 08 2016
[bundle_Price] => 6000
)
[12] => Array
(
[month] => 09 2016
[bundle_Price] => 17500
)
[13] => Array
(
[month] => 10 2016
[bundle_Price] => 1200
)
[14] => Array
(
[month] => 12 2016
[bundle_Price] => 6000
)
)
但是我希望它在DESC顺序中按照MonthYear排序...排序后上面数组中的顺序不正确..
以下排序顺序是按月和年的描述顺序。
.. so on....
[month] => 03 2017
[month] => 02 2017
[month] => 01 2017
[month] => 12 2016
[month] => 11 2016
[month] => 10 2016
[month] => 09 2016
... so on...
我想按数组[month]
字段排序,而不是[bundle_price
],但是bundle_price应该在数组中。
答案 0 :(得分:1)
您需要执行几个步骤才能实现此目的。
每个月变量strtotime
,然后进行排序。
$tempArray = [];
for($x = 0; $x < count($myResult); $x++){
$tempArray[strtotime($myResult['month])] = $myResult[$x];
}
在tempArray
中,您将获得每月只有strtotime结果的密钥。现在你需要做sory。
$keys = sort(array_keys($tempArray));
现在您可以print_r($myResult)
,结果将符合您的预期。
答案 1 :(得分:1)
更改数据格式是否为时已晚?
YYYY MM 非常 简化您的任务。
然后你可以ORDER BY DATE (DESC)
事实上,将其设为INT而不是字符串会更有效率。仍然很容易在PHP格式化显示。