Hallo,
ich habe eine Funktion, welche ich zweimal ausführen lassen möchte.
Leider wird sie nur einmal ausgeführt und bricht danach das Script ab.
Ich habe leider keine Ahnung wie ich die Sache angehen muss, bzw. wo der Fehler liegt.
LG
Maik
ich habe eine Funktion, welche ich zweimal ausführen lassen möchte.
Leider wird sie nur einmal ausgeführt und bricht danach das Script ab.
PHP:
$jahr = '2015';
$von1 = '2015-04-07';
$bis1 = '2015-04-14';
$von2 = '2015-04-22';
$bis2 = '2015-05-01';
function arbeitstage($von,$bis,$year)
{
// Feste Feiertage Sachsen-Anhalt
$feiertage[] = "0101"; // Neujahrstag
$feiertage[] = "0601"; // Heilige drei Könige
$feiertage[] = "0105"; // Tag der Arbeit
$feiertage[] = "0310"; // Tag der Deutschen Einheit
$feiertage[] = "3110"; // Reformationstag
$feiertage[] = "2512"; // Erster Weihnachtstag
$feiertage[] = "2612"; // Zweiter Weihnachtstag
// Bewegliche Feiertage berechnen
function get_easter_datetime($jahr) {
$days = easter_days($jahr);
return mktime(0, 0, 0, 3, 21+$days,$jahr);
}
$tage = 86400; //60 * 60 * 24
$ostersonntag = get_easter_datetime($jahr);
$feiertage[] = date("dm", $ostersonntag - 2 * $tage); // Karfreitag
$feiertage[] = date("dm", $ostersonntag + 1 * $tage); // Ostermontag
$feiertage[] = date("dm", $ostersonntag + 39 * $tage); // Himmelfahrt
$feiertage[] = date("dm", $ostersonntag + 50 * $tage); // Pfingstmontag
//Wochenenden des Jahres ausgeben
$prevTime = mktime(0,0,0, 1,1,$jahr);
$aWeekends = array ();
while(true)
{
$prevTime = strtotime ('next saturday' , $prevTime);
$prevYear = date ('Y' , $prevTime);
if ($prevYear > $jahr) break;
$aWeekends[] = date ('dm' , $prevTime);
$aWeekends[] = date ('dm' , $prevTime + 3600 * 24);
}
// Array mit den gesamten Tagen aus von und bis bilden
$startdatum = strtotime($von);
$enddatum = strtotime($bis);
while ($startdatum <= $enddatum)
{
$vonbis[] = date('dm', $startdatum);
$startdatum += 24 * 60 * 60;
}
// neues array erstellen wo die wochenenden nicht mehr dabei sind
$cleanarraywe = array_diff($vonbis, $aWeekends);
// neues array erstellen wo die Feiertage nicht mehr dabei sind
$cleanarrayft = array_diff($cleanarraywe, $feiertage);
$tage = count($cleanarrayft);
return($tage);
}
echo 'Sollte 6 sein: '.arbeitstage($von1,$bis1,$jahr);
echo 'Sollte 7 sein: '.arbeitstage($von2,$bis2,$jahr);
Ich habe leider keine Ahnung wie ich die Sache angehen muss, bzw. wo der Fehler liegt.
LG
Maik