2016-07-25 10 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配列は、だから今どのように私は、私は、データベース内の私のテーブルにユーザの活動から得た配列を比較することができますか?

私は$ working_daysは[$ x]は私の曜日名を返しません、代わりにそれはどちらか一日の仕事を私に返すことに気づく私はこの次のコードを持っているが、それは正しく

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"; 
      } 
     } 
    } 

を動作しません。 、半日または休日 $ days()から$ working_days dayまでの曜日名を比較するにはどうすればよいですか?

金曜日、土曜日、日曜日を選択日とすると、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; 
関連する問題