PHP gibi "Kasım" olarak bir ay dize verildi

5 Cevap php

Yani

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

Ben ters ayın sayısı verildiğinde mktime kullanarak ve ay dize dönen örneklerini gördük, ama yok ettik.

5 Cevap

Denemek

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

Eğer sık ​​sık bunu yapmak varsa, bu kodlanmış değerleri olan bir dizi kullanarak düşünebilirsiniz:

$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');

Ayrıca değerleri için tuşları ve sayıların adlarını kullanarak, gerçi o başka bir yol yuvarlak yapabilirsiniz.

Yapmanız değerleri için isimleri ile

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

ve yapmanız tuşları için isimleri ile

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

Lütfen usecase için tuşları yaklaşım isimleri büyük olasılıkla daha rahat olsa ben, in general biraz daha iyi tuşları için numaralarını kullanarak bulabilirsiniz. Dizide sadece 12 değerlerle, dizi yaklaşımlarla arasında pek bir fark olmaması gerekir.

Zaman dönüşüm (: başka bir bilgisayarda farklı olabilir okumak) benim bilgisayarda 0.000060s sürer ise hızlı bir kriter, 0.000002s vs 0.000003s bir fark kaydetti.

Ne strtotime() November, bir zaman damgası dönüştürmek, ve, daha sonra, date() fonksiyonu kullanma hakkında ilgili numarasını almak için n formatında:

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

Aşağıdaki çıktıyı verir:

11


And, just for fun, a portion of code such as the following one :

$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 />';
}

Bu fikir tüm 12 ay boyunca çalışır ve sadece Kasım edeceğini gösteren ;-) - onların karşılık gelen numaraları ile tüm ayın listesini verecek

Bu daha verimli hayal edemiyorum, ama çalışır

$t = strtotime("March");
echo date('n',$t);

Kafamın üst kapalı düşünebilirsiniz tek şey bir değişken olarak her dizesi ayarlamak ve ilgili = sayı yapmaktır. Ama sonra tekrar = ben çok yeniyim, bu yüzden herhangi bir kolay yolu vardır (sanki iyi görmek için istekli değilim

Senin senaryoya bağlı muhtemelen bu en etkili çözüm gibi ilişkilendirilebilir bir dizi oluşturmak olacaktır:

$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);

Ve sonra aramaları süper kolay:

$month = "Nobember";
$monthNumber = $months[strtolower($month)];