2016-07-25 14 views
4

Ich bin ein Junior-Programmierer, der immer noch lernt, wie man Code schreibt. Ich habe dieses Array in meinem PHPVergleichen Array erhalten Daten aus der Datenbank 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'))); 
} 

Aus dieser Anordnung wird es Liste für Tage sein, die durch den Benutzer ausgewählt wurden (Montag, Dienstag, usw.)

Dann habe ich diese Tabelle in meiner Datenbank

work_scheme 

Die work_scheme besteht aus Tabelle

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

dies mein Wo ist rking_days-Array, das die Daten aus der Datenbank abgerufen wird

$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'] 
      ); 
     } 
    } 

So, jetzt, wie kann ich das Array vergleiche ich von der Benutzeraktivität auf meine Tabelle in der Datenbank erhalten?

Ich habe diesen folgenden Code, aber es funktioniert nicht richtig

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

ich feststellen, dass die $ working_days [$ x] kehrt mir den Tag nicht Namen, sondern wird es mir zurück entweder Arbeitstag , halber Tag oder Tag Wie kann ich den Tag-Namen von $ days() zu $ ​​working_days Tag vergleichen?

Also, sagen wir, die gewählten Tage sind Freitag, Samstag und Sonntag, Wie kann ich Codes schreiben, die mir 1,5 Tage zurückgeben?

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

Antwort

0

so etwas wie dieses Versuchen:

Zuerst initialisieren Ihre Arbeitstage Array in einen nützlicheren

$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]; 
     } 
    } 
} 

Dann berechnen Sie Ihre Tage:

$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; 
Verwandte Themen