foreach仅按日期输出上次运行查询

时间:2018-02-18 14:49:15

标签: php arrays

我目前正在制作一个小型制作跟踪器,让我的工作变得更轻松,到目前为止一切顺利,但在获取一些统计数据方面,我还遇到了障碍。

我试图计算星期日 - 星期日和所有行之间的所有行,以表示日/夜班次。

以下是我到目前为止的问题,我遇到的问题是唯一一个似乎有效的查询是Days,甚至那似乎只想输出星期日(今天)数,其他一切都回来了尽管如此,回显$ key或$ value foreach也是正确的。

感谢您的帮助。

$this_week = array($monday=>"monday", $tuesday=>"tuesday", $wednesday=>"wednesday", $thursday=>"thursday", $friday=>"friday", $saturday=>"saturday", $sunday=>"sunday");

foreach ($this_week as $key => $value) {

// Days

$sql_day = "SELECT count(*) FROM `stage_tbl` WHERE stage_1_date = :datenow AND stage_1_time BETWEEN :day_start AND :day_end"; 
$result_day = $conn->prepare($sql_day); 
$result_day->execute(array ('datenow' => $key, 'day_start' => $day_start, 'day_end' => $day_end)); 
$number_of_rows_day = $result_day->fetchColumn();

$day = "{$value}_day";

$$day = $number_of_rows_day;


// Nights

$datenext = date('Y-m-d', strtotime($key. ' + 1 days'));

$sql_night = "SELECT count(*) FROM `stage_tbl` WHERE stage_1_date = :datenow AND stage_1_time >= :night_start OR WHERE stage_1_date = :datenext AND stage_1_time <= :night_end"; 
$result_night = $conn->prepare($sql_night); 
$result_night->execute(array ('datenow' => $key, 'night_start' => $night_start, 'night_end' => $night_end, 'datenext' => $datenext)); 
$number_of_rows_night = $result_night->fetchColumn();

$night = "{$value}_night";

$$night = $number_of_rows_night;

}

2 个答案:

答案 0 :(得分:0)

你不需要变量$ monday直到$ sunday key。您没有分配这些变量。

你想要的是这个:

$this_week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];

请注意,我们也不再使用旧的array()语法来创建数组。现在我们使用[]语法。

现在我们可以循环:

foreach ($this_week as $day) {

// your logic goes here
// $day will equal 'Monday' for the first run 
// and 'Sunday' for the last run

}

答案 1 :(得分:0)

我没有把输出放在foreach中,所以最后我只得到了最后的结果。谢谢你的回顾。