1

このようなタイムスタンプを持つ週の配列があります2013-01-07 06:55:34。私がやりたいのは、配列を1日ごとに最大7つの異なる配列に分割することです。PHPでそれは可能ですか?

配列を作成する方法は次のとおりです

$sqlCount="SELECT time_stamp FROM `download_log` WHERE WEEK(`time_stamp`) = WEEK(CURRENT_TIMESTAMP) AND YEAR(`time_stamp`) = YEAR(CURRENT_TIMESTAMP)";
$queryCount = mysql_query($sqlCount) or die(mysql_error());


$dates = array();

while(($row =  mysql_fetch_assoc($queryCount))) {
    $dates[] = $row['time_stamp'];
}

そして、私が欲しいのは、7つの異なる配列のようなものであり、それらの配列のそれぞれには、配列$monday $tuesday etc.からの日数があります$dates

4

3 に答える 3

3

date()これは、PHPの関数と少しのループアクションで簡単に実行できます。

次の線に沿った何かがあなたを動かすはずです:

// array to hold all of the dates in
$dates = array('Mon' => array(), 'Tue' => array(), 'Wed' => array(),
               'Thu' => array(), 'Fri' => array(), 'Sat' => array(),
               'Sun' => array());

while(($row =  mysql_fetch_assoc($queryCount))) {
    // get the day of the week for the current element
    $dayOfWeek = date('D', $row['time_stamp']);

    // add the current element to the correct day-entry in the `$dates` array
    $dates[$dayOfWeek][] = $row;
}

これは、任意のインデックス(省略形の週名、完全な週名、数値の曜日など)を使用するように適合させることができるサンプルテンプレートです。関数から使用可能な値を確認しdate()、ニーズに合わせて調整します。

編集データベースから読み取っているループに合うように、上記
の元の/汎用ループをカスタマイズしました。forwhile

于 2013-01-08T16:31:45.550 に答える
1

自分が何を望んでいるのかはっきりしているのかどうかはわかりませんが、これが自分のやっていることだと思いました。

$mon = array();
$tue = array();
$wed = array();
$thur = array();
$fri = array();
$sat = array();
$sun = array();

foreach ($dates as $value) {

if(date('D', strtotime($value)) == 'Mon') {
    $mon[] = $value;
    }
    if(date('D', strtotime($value)) == 'Tue') {
    $tue[] = $value;
    }
    if(date('D', strtotime($value)) == 'Wed') {
    $wed[] = $value;
    }
    if(date('D', strtotime($value)) == 'Thu') {
    $thur[] = $value;
    }
    if(date('D', strtotime($value)) == 'Fri') {
    $fri[] = $value;
    }
    if(date('D', strtotime($value)) == 'Sat') {
    $sat[] = $value;
    }
    if(date('D', strtotime($value)) == 'Sun') {
    $sun[] = $value;
    }

}
于 2013-01-09T15:20:35.837 に答える
0

WEEKDAY()MySQLの組み込み関数を使ってみませんか?

$sqlCount = "SELECT WEEKDAY(`time_stamp`) AS 'weekday', `time_stamp` ...";

次に、次のように日付をプッシュできます

$dates[$row['weekday']][] = $row['time_stamp'];

別の方法は、組み込みDATE_FORMAT()関数です。(2番目のパラメーターを)使用すると、曜日の省略名が表示されます。

$sqlCount = "SELECT DATE_FORMAT(`time_stamp`,'%a') AS 'weekday', `time_stamp` ...";
于 2013-01-08T16:39:39.600 に答える