現在、("April"、"August"、"February") などのように並べられた月名の配列があります。("January"、"二月三月")
この配列は SHOW TABLES sql クエリから取り込まれていますが、残念ながら SHOW TABLES には ORDER BY パラメータがないため、それらを配列に追加し、配列を並べ替えて、探しているものを取得することをお勧めします。
月を数値に変換します。次に、を使用して配列を数値で並べ替えますsort()
この質問を使用できます:月を名前から数字に変換します
@Matthewの答えはうまくいくようです:
$date = date_parse('July');;
echo $date["month"];
実用的なソリューション
$months = array("April", "August", "February");
usort($months, "compare_months");
var_dump($months);
function compare_months($a, $b) {
$monthA = date_parse($a);
$monthB = date_parse($b);
return $monthA["month"] - $monthB["month"];
}
これはわずかに最適化されたバージョンです(日付解析なし)^^
$foobar_months = array( 'april','februari', 'march', 'may', 'june', 'januari', 'august', 'october', 'july', 'november', 'december', 'september' );
usort( $foobar_months, "sortMonths" );
var_dump( $foobar_months );
function sortMonths ( $a, $b ) {
$months = array( 'januari', 'februari', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december' );
if ( array_search( $a, $months) == array_search( $b, $months) ) return 0;
return array_search( $a, $months) > array_search( $b, $months) ? 1 : -1;
}
$input = array('May', 'December', 'March', 'July');
$output = array();
foreach($input as $month) {
$m = date_parse($month);
$output[$m['month']] = $month;
}
ksort($output);
var_dump($output);
出力
array
3 => string 'March' (length=5)
5 => string 'May' (length=3)
7 => string 'July' (length=4)
12 => string 'December' (length=8)
アレイをスタンドアロンアレイとしてソートすることはできません。システムには、1月が最初で、次に2月が続くことなどを知る方法がないためです。最初に、次のようにハッシュを定義できます。
a = {'January':0,'February':1,...'December':11}
次に、この方法で配列を並べ替えることができます
array_to_be_sorted = sorted(array_to_be_sorted, key = lambda(x): a[x])
以下の手順に従うことができます
switch($month) case '1月': $order_month_list[1] = 1月; 壊す; $order_month_list[2] = 2 月; 壊す; .. ... $order_month_list[12] = 12月; 壊す;
}