人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPで質問です。
今日の日を取得し、そこから14日分の配列を作りたいのですがどのような方法が良いでしょうか?
例えば、
$week = array(
array("20081201","12/01"),
array("20081202","12/02"),
(省略)
array("20081213","12/13"),
)
みたいな配列と、
$week2 = array(
array("year" => "2008","mon" => "12","day" => "01"),
array("year" => "2008","mon" => "12","day" => "02"),
(省略)
array("year" => "2008","mon" => "12","day" => "13"),
)
のような配列が欲しいです。

やってはみたのですが、月、年をまたいだ処理が分かりません。
お願いいたします。

●質問者: norif_h
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:PHP 配列
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● tdoi
●30ポイント

こんなことでしょうか?

<?php
$currentYear = date('Y');
$currentMonth = date('m');
$currentDay = date('d');

$result1 = array();
$result2 = array();
for ($i = 0; $i < 14; ++$i) {
 $stamp = mktime(0, 0, 0, $currentMonth, $currentDay + $i, $currentYear);
 $result1[] = array(date('Ymd', $stamp), date('m/d', $stamp));
 $result2[] = array('year' => date('Y', $stamp), 'mon' => date('m', $stamp), 'day' => date('d', $stamp));
}

print_r ($result1);
print_r ($result2);
?>

mktimeでタイムスタンプを作成して、dateでフォーマット出力する。

色々な部分で利用できるので便利です。

直接は関係ないですが、mktimeで、m月0日と指定すると、(m-1)月の最終日を取得できたりと、色々使えます。


何かの参考になれば。

◎質問者からの返答

ありがとうございます。

参考にさせていただきます。


2 ● masashi0316
●10ポイント
$week = array();
$now = time();

for($i = 0; $i < 14; $i++) {
 $time = $now + (86400 * $i);
 $week[$i]['year'] = date("Y",$time);
 $week[$i]['month'] = date("m",$time);
 $week[$i]['day'] = date("d",$time);
 $week[$i]['date'] = date("Ymd",$time);
}

などでいかがでしょう?

◎質問者からの返答

ありがとうございます。

参考にさせていただきます。


3 ● Quphondi
●40ポイント ベストアンサー

strttotimeを使うとこう書けます。冗長に書いてます。

// 変数初期化(無くても動きます)
$week = array();
$week2 = array();

$date = date("Ymd");

for($i=0; $i<14; $i++){

 $timestamp = strtotime("$date + $i day"); // ここが肝

 $ymd = date("Ymd",$timestamp);
 $md = date("m/d",$timestamp);
 $week[] = array($ymd,$md);

 $y = date("Y",$timestamp);
 $m = date("m",$timestamp);
 $d = date("d",$timestamp);

 $week2[] = array("year"=>$y,"mon"=>$m,"day"=>$d);

}

print("<pre>");
print_r($week);
print_r($week2);
print("</pre>");

5行目の

$date = date("Ymd");
|<<

を次のようにすれば、年またぎ・月またぎの処理がされていることが確認できます。

>||
$date = date("Ymd",strtotime("20081226"));
◎質問者からの返答

ありがとうございます。

参考にさせていただきます。


4 ● GoldenDawn
●10ポイント
<?php
function get14days() {
 $result = array() ;
 for ($i = 0, $t = time(); $i < 14; ++$i, $t += 24*60*60) {
 $result[] = array(date('Ymd', $now), date('m/d', $t)) ;
 }
 return $result ;
}

function get14days2() {
 $result = array() ;
 for ($i = 0, $t = time(); $i < 14; ++$i, $t += 24*60*60) {
 $result[] = array_combine(array('year', 'mon', 'day'), explode('/', date('Y/m/d', $t))) ;
 }
 return $result ;
}

print_r(get14days()) ;
print_r(get14days2()) ;
?>
◎質問者からの返答

ありがとうございます。

参考にさせていただきます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ