8

つまり

Month        Returns
January      1
February     2
March        3
April        4
May          5
June         6
July         7
August       8
September    9
October      10
November     11
December     12

月の番号を指定して月の文字列を返すときにmktimeを使用する例を見てきましたが、その逆はありません。

4

6 に答える 6

22

試す

echo date('n', strtotime('November')); // returns 11

これを頻繁に行う必要がある場合は、次の値がハードコードされている配列の使用を検討してください。

$months = array( 1 => 'January', 2 => 'February', 3 => 'March', 4 => 'April',
                 5 => 'May',     6 => 'June',     7 => 'July',  8 => 'August',
                 9 => 'September', 10 => 'October', 11 => 'November',
                 12 => 'December');

ただし、キーの名前と値の数値を使用して、逆の方法で行うこともできます。

あなたがする値の名前で

echo array_search('November', $months); // returns 11

そしてあなたがする鍵の名前で

echo $months['November']; // returns 11

一般的に、キーの番号を使用する方がいくらか優れていると思いますが、ユースケースでは、キーの名前のアプローチの方が快適な可能性があります。配列に12個の値しかないので、配列のアプローチに大きな違いはないはずです。

簡単なベンチマークでは、0.000003秒と0.000002秒の違いがわかりましたが、私のコンピューターでは変換に0.000060秒かかります(他のコンピューターでは異なる場合があります)。

于 2010-04-23T20:15:57.027 に答える
7

を使用strtotime()してタイムスタンプに変換Novemberし、次に、対応する数値を取得する形式のdate()関数を使用する場合はどうでしょうか。n

$ts = strtotime('november');
echo date('n', $ts);

次の出力が得られます。

11


そして、楽しみのために、次のようなコードの一部:

$months = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', );
foreach ($months as $m) {
    $ts = strtotime($m);
    echo $m . ' : ' . date('n', $ts) . '<br />';
}

すべての月のリストとそれに対応する番号が表示されます。このアイデアが11月だけでなく、12か月すべてにわたって機能することを示しています;-)

于 2010-04-23T20:16:30.427 に答える
5

これがより効率的だとは想像できませんが、機能します

$t = strtotime("March");
echo date('n',$t);
于 2010-04-23T20:17:20.400 に答える
1

私が頭の中で考えることができる唯一のことは、各文字列を変数として設定し、それをそれぞれの数値にすることです。しかし、私はかなり新しいので、もっと簡単な方法があるかどうかも確認したいと思っています(=

于 2010-04-23T20:17:25.450 に答える
1
$months = array('January', 'February', 'March', 'April', 'May', 'June', 
                'July', 'August', 'September', 'October', 'November', 'December', );
foreach ($months as $m) {
    echo $m."=".date('n', strtotime($m))."<br>";
};
于 2010-04-23T21:04:05.707 に答える
0

シナリオによっては、おそらくこれに対する最も効率的な解決策は、次のような連想配列を作成することです。

$months = array("january" => 1, "february" => 2, "march" => 3, "april" => 4, "may" => 5, "june" => 6, "july" => 7, "august" => 8, "september" => 9, "october" => 10, "november" => 11, "december" => 12);

そして、ルックアップは非常に簡単です。

$month = "Nobember";
$monthNumber = $months[strtolower($month)];
于 2010-04-23T21:05:50.080 に答える