Mit dieser Funktion kann überprüft werden, ob z. B. ein Ladengeschäft aktuell geöffnet hat.
Wochentag | Uhrzeit von | Uhrzeit bis |
---|---|---|
Montag | 08:00 Uhr | 12:00 Uhr |
Montag | 14:00 Uhr | 18:00 Uhr |
Dienstag | 08:00 Uhr | 12:00 Uhr |
Dienstag | 14:00 Uhr | 18:00 Uhr |
Mittwoch | 08:00 Uhr | 12:00 Uhr |
Donnerstag | 08:00 Uhr | 12:00 Uhr |
Donnerstag | 14:00 Uhr | 18:00 Uhr |
Freitag | 08:00 Uhr | 12:00 Uhr |
Samstag | 08:00 Uhr | 13:00 Uhr |
Durch die Verwendung der Dezimal-Werte für die Wochentage können die Werte der komplexen Tabelle oben in PHP sehr vereinfacht abgebildet werden. Hier finden Sie eine Erklärung der Zusammensetzung der Dezimal-Werte.
$zeiten = [ 0 => [ 'wochentage' => 62, 'uhrzeit_von' => '08:00', 'uhrzeit_bis' => '12:00' ], 1 => [ 'wochentage' => 22, 'uhrzeit_von' => '14:00', 'uhrzeit_bis' => '18:00' ], 2 => [ 'wochentage' => 64, 'uhrzeit_von' => '08:00', 'uhrzeit_bis' => '13:00' ] ];
/** * @param array $zeiten * @return bool */ function isOpen( array $zeiten ) { $today = date( "w" ); // heutiger Wochentag (0 bis 7) $value = pow( 2, $today ); // Potzenzwert des heutigen Wochentags foreach( $zeiten as $zeit ) { if( $value & $zeit['wochentage'] ) // nur, wenn der Potzenwert in den Wochtentagen enthalten ist { $von = explode( ':', $zeit['uhrzeit_von'] ); $start = mktime( $von[0], $von[1] ); $bis = explode( ':', $zeit['uhrzeit_bis'] ); $end = mktime( $bis[0], $bis[1] ); if( time() >= $start && time() <= $end ) { return true; } } } return false; }
if( isOpen( $zeiten ) ) { echo "jetzt geöffnet"; } else { echo "jetzt geschlossen"; }