PHP: Önümüzdeki 12 ay isimlerini içeren bir dizi doldurma

5 Cevap
for($x=0; $x<12; $x++)
{
    $month = mktime(0, 0, 0, date("m")+$x, date("d"),  date("Y"));
    $key = date('m', $month);
    $monthname = date('F', $month);
    $months[$key] = $monthname;
}

Herhalde ben mktime 4. parametresi için yanlış matematik yapıyorum biliyorum. Ben cari ay sayısına (7 Temmuz olmak) ile başlayan ve sonraki her ay için 1 ekleyerek, bazen ben ayın başında bunu ayarlama değilim çünkü aynı ay, belki iki kez döndürülür olmak biter ediyorum? Nasıl artıracak / Bu Recode?

Sonuç $ ay 07 = 8 Temmuz bir dizi = Ağustos, 09 Eylül = neden olduğunu ifade etti. Şu anda iki kez Ekim doldurur. Ben bugün 31 olmak ile ilgisi olduğunu düşünüyorum ve bunu yanlış ekler ve önümüzdeki ay ulaşır.

5 Cevap

Sadece biraz kodunuzu sabit, bu oldukça iyi çalışması gerekir:

$months = array();
$currentMonth = (int)date('m');

for ($x = $currentMonth; $x < $currentMonth + 12; $x++) {
    $months[] = date('F', mktime(0, 0, 0, $x, 1));
}

Ben gereksiz olduğunu düşünüyorum, ama eğer ihtiyacınız varsa tabii ki bunu değiştirmek gibi ben, dizi anahtar çıkardı unutmayın.

2592000 Verilen 30 gündür.

$month_time = 60*60*24*30; // 30 Days
for($x=0; x<12; $x++)
{
     $time = time()+($month_time*$x);
     $key = date('m', $time);
     $month[$key] = date('F', $time);
}

StackOverflow bir cevap olarak, şu anda bulamıyorum, birileri artık bir zaman 1 hafta yaratma çoklu yöntemlerin performansını karşılaştırdık. Doğrudan numaralarını kullanarak çok daha verimli başka bir yöntem daha oldu.

Aynı bağlantı ile iki ay açtı - - Sen ayın son günü (31) hata almak olabilir Eddy çok güzel bu benim için anladım answer:

 $current_month = date('n');
$MONTHS = array();
for ($m=0; $m<12; $m++) {
  $display_month = $m + $current_month;
  $MONTHS[] = date('F',mktime(1,1,1,$display_month,1,date("Y")));

"Sonuç $ ay 07 = 8 Temmuz = Ağustos, 09 Eylül = bir dizi neden olduğunu ifade etti."

for ($key = 1; $key <=12; $key++) {
    $months[str_pad($key, 2, '0', STR_PAD_LEFT)] = date('F', strtotime('2000-' . $key));
}

Eğer 7 ile tamam iseniz = 8 Temmuz = Ağustos, 9 = Eylül, sonra:

for ($key = 1; $key <=12; $key++) {
    $months[$key] = date('F', strtotime('2000-' . $key));
}