[英]Sort by Date (Month Year) in PHP or MySQL
我已經檢查過SOF的所有內容,但無法找到解決方案。 我有日期是month
和year
這樣從MySQL的到來。 我的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
)
)
但我希望它按DEC順序按MonthYear排序...排序后上述數組中的順序不正確。
下面的排序順序是按月和年的Desc順序。
.. 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
,但是bundle_price應該在數組中排序。
您需要執行一些步驟來實現此目的。
設置每個月的strtotime
變量,然后進行排序。
$tempArray = [];
for($x = 0; $x < count($myResult); $x++){
$tempArray[strtotime($myResult['month])] = $myResult[$x];
}
在tempArray
您將只有每個月的strtotime結果的鍵。 現在,您需要做些抱歉。
$keys = sort(array_keys($tempArray));
現在您可以使用print_r($myResult)
,結果將符合您的期望。
更改數據格式是否為時已晚?
YYYY MM將大大簡化您的任務。
然后,您可以按ORDER BY DATE (DESC)
實際上,將其設置為INT而不是字符串將更有效,並且仍易於在PHP中格式化以進行顯示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.