2016-07-25 121 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; 
相關問題