====== Überprüfung von Öffnungszeiten mit PHP ======
Mit dieser Funktion kann überprüft werden, ob z. B. ein Ladengeschäft aktuell geöffnet hat.
==== Beispiel-Öffnungszeiten ====
^ 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 |
==== Definierung der Öffnungszeiten ====
Durch die Verwendung der Dezimal-Werte für die Wochentage können die Werte der komplexen Tabelle oben in PHP sehr vereinfacht abgebildet werden. [[php:bitweise|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' ]
];
==== PHP-Funktion "isOpen" ====
/**
* @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;
}
==== Funktionsaufruf ====
if( isOpen( $zeiten ) )
{
echo "jetzt geöffnet";
}
else
{
echo "jetzt geschlossen";
}