【发布时间】:2017-09-07 03:42:12
【问题描述】:
我正在尝试从第 01 天到第 30 天找出本月的日常销售。我一次又一次地使用日期功能。并且每次都使用相同的变量。我的代码很大,看起来很糟糕。我怎样才能使这段代码更智能,这样我就不必编写所有这些代码了。只用一个循环就可以完成所有事情......谢谢
//first date
$todaySdate=date("Y-m-01 " );
$todayEdate=date("Y-m-01 23:59:59 ");
$this->db->select('*');
$this->db->from('ospos_sales AS A');
$this->db->join('ospos_sales_payments AS B', 'B.sale_id = A.sale_id', 'left');
$this->db->where('A.sale_time >=', $todaySdate);
$this->db->where('A.sale_time <=', $todayEdate);
$Todaysales = $this->db->get()->result_array();
$todaySale=0;
foreach($Todaysales as $d)
{
$todaySale+=$d['payment_amount'];
}
echo $todaySdate.'TK :' .number_format( $todaySale,"2" )."</br>";
$startDate=date("Y-m-d" );
$endDate=date("Y-m-d");
// second date
$todaySdate=date("Y-m-02 " );
$todayEdate=date("Y-m-02 23:59:59");
$this->db->select('*');
$this->db->from('ospos_sales AS A');
$this->db->join('ospos_sales_payments AS B', 'B.sale_id = A.sale_id', 'left');
$this->db->where('A.sale_time >=', $todaySdate);
$this->db->where('A.sale_time <=', $todayEdate);
$Todaysales = $this->db->get()->result_array();
$todaySale=0;
foreach($Todaysales as $d)
{
$todaySale+=$d['payment_amount'];
}
echo $todaySdate.'TK :' .number_format( $todaySale,"2" )."</br>";
$startDate=date("Y-m-d" );
$endDate=date("Y-m-d");
//third date
$todaySdate=date("Y-m-03 " );
$todayEdate=date("Y-m-03 23:59:59");
$this->db->select('*');
$this->db->from('ospos_sales AS A');
$this->db->join('ospos_sales_payments AS B', 'B.sale_id = A.sale_id', 'left');
$this->db->where('A.sale_time >=', $todaySdate);
$this->db->where('A.sale_time <=', $todayEdate);
$Todaysales = $this->db->get()->result_array();
$todaySale=0;
foreach($Todaysales as $d)
{
$todaySale+=$d['payment_amount'];
}
echo $todaySdate.'TK :' .number_format( $todaySale,"2" )."</br>";
$startDate=date("Y-m-d" );
$endDate=date("Y-m-d");
// fourth date date
$todaySdate=date("Y-m-04 " );
$todayEdate=date("Y-m-04 23:59:59");
$this->db->select('*');
$this->db->from('ospos_sales AS A');
$this->db->join('ospos_sales_payments AS B', 'B.sale_id = A.sale_id', 'left');
$this->db->where('A.sale_time >=', $todaySdate);
$this->db->where('A.sale_time <=', $todayEdate);
$Todaysales = $this->db->get()->result_array();
$todaySale=0;
foreach($Todaysales as $d)
{
$todaySale+=$d['payment_amount'];
}
echo $todaySdate.'TK :' .number_format( $todaySale,"2" )."</br>";
$startDate=date("Y-m-d" );
$endDate=date("Y-m-d");
// Fifth date
$todaySdate=date("Y-m-05 " );
$todayEdate=date("Y-m-05 23:59:59");
$this->db->select('*');
$this->db->from('ospos_sales AS A');
$this->db->join('ospos_sales_payments AS B', 'B.sale_id = A.sale_id', 'left');
$this->db->where('A.sale_time >=', $todaySdate);
$this->db->where('A.sale_time <=', $todayEdate);
$Todaysales = $this->db->get()->result_array();
$todaySale=0;
foreach($Todaysales as $d)
{
$todaySale+=$d['payment_amount'];
}
echo $todaySdate.'TK :' .number_format( $todaySale,"2" )."</br>";
$startDate=date("Y-m-d" );
$endDate=date("Y-m-d");
........
.......
.......
我的代码的示例输出..
2017-09-01 TK :0.00
2017-09-02 TK :1,186.55
2017-09-03 TK :1,311.45
2017-09-04 TK :0.00
.........
........ .
2017-09-30 TK :0.00
【问题讨论】:
-
你可能会发现这个问题更适合CodeReview
-
如前所述,这对代码审查来说会更好,但我会先创建一个函数或类/方法来包含 dup 代码。
-
你能帮我吗? @拉斯克拉特
-
您也可以使用
for()循环执行此操作,只需增加date()
标签: php codeigniter dry