2016-07-25 49 views
4

我是一名仍在学习如何编写代码的初级程序员。 我有这个数组中我的PHP将得到的数组与数据库中的数据进行比较PHP

//data inside the array are days name 
$days = array(); 
for($date = $from_date; $date <= $to_date; $date->modify('+1 day')) { 
    array_push($days,strtolower($date->format('l'))); 
} 

从这个阵列,将有名单已经由用户选择天(星期一,星期二,等等)

然后,我有此表在我的数据库

work_scheme 

的work_scheme由表

//field_name => data 
Monday => Working Day 
Tuesday => Working Day 
Wednesday => Working Day 
Thursday => Working Day 
Friday => Working Day 
Saturday => Half Day 
Sunday => Off Day 

的,这是我的禾该数据从数据库

$working_days = array(); 
if(count($work_scheme) > 0){ 
     foreach($work_scheme as $r){ 
      $working_days[0] = array(
       "monday" => $r['monday'] 
      ); 
      $working_days[1] = array(
       "tuesday" => $r['tuesday'] 
      ); 
      $working_days[2] = array(
       "wednesday" => $r['wednesday'] 
      );  
      $working_days[3] = array(
       "thursday" => $r['thursday'] 
      ); 
      $working_days[4] = array(
       "friday" => $r['friday'] 
      ); 
      $working_days[5] = array(
       "saturday" => $r['saturday'] 
      ); 
      $working_days[6] = array(
       "sunday" => $r['sunday'] 
      ); 
     } 
    } 

检索所以现在我怎么能在数据库中,我从用户的活动所获得的数组比较我的表rking_days阵列?

我有这个下面的代码,但它不能正常工作

for($i = 0; $i < count($days); $i++){ 
     for($x = 0; $x < count($working_days); $x++){ 
      $total_days = 0; 
      if($days[$i] == $working_days[$x]){ 
       echo "hello world"; 
      } 
     } 
    } 

我注意到$ working_days [$ X]不会回到我一天的名字,而是将返回我要么工作日,半天或休息日 如何比较从$ days()到$ working_days天的日期名称?

所以如果我们说选定的日子是星期五,星期六和星期天,我该如何编写能够返回我1.5天的代码?

Working day = 1 
Half day = 0.5 
Off day = 0 

回答

0

尝试这样的:

首先,初始化您的工作日阵列更为有效的方式

$scheme_days = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]; 
$working_days = []; 
if (count($work_scheme) > 0) 
{ 
    foreach ($work_scheme as $r) 
    { 
     foreach ($scheme_days as $scheme_day) 
     { 
      $working_days[$scheme_day] = $r[$scheme_day]; 
     } 
    } 
} 

然后,计算出你的日子:

$total_days = 0; 
for ($i = 0; $i < count($days); $i++) 
{ 
    $worked_day = strtolower($working_days[strtolower($days[$i])]); 

    if ($worked_day == "working day") 
    { 
     $total_days++; 
    } 
    else if ($worked_day == "half day") 
    { 
     $total_days += 0.5; 
    } 
} 

echo $total_days; 
相关问题