1

我有一个一周的数组,带有这样的时间戳2013-01-07 06:55:34,我想做的是每天将数组拆分为 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

这可以通过 PHP 的date()函数和一些循环操作轻松完成。

类似于以下内容的内容应该可以帮助您:

// 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()并调整为更适合您需求的值。

编辑
我在for上面定制了我的原始/通用循环以适合while从数据库读取的循环。

于 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()函数。以下使用(第二个参数)将为您提供缩写的工作日名称。

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