I ditt exempel så kan du alltid loopa igenom $open_hours en gång till om $remaining_open_hours är 0 och då jämföra med morgondagens öppettider istället (glöm inte att kolla minuter också).
Ett tips är att använda
DateTime::diff för att jämföra tid med PHP. Då slipper du räkna antal timmar som först återstår av dygnet samt hur många som är kvar till dygnet efter.
Gjorde ett snabbt exempel på funktionen (dock något annorlunda strukturerad):
PHP-kod:
// Skapa Array med öppettider
$opening_hours = array(
1 => array("08:30", "17:30"), // Mån
2 => array("08:30", "17:30"), // Tis
3 => array("08:30", "17:30"), // Ons
4 => array("08:30", "17:30"), // Tors
5 => array("08:30", "17:30"), // Fre
6 => array("08:30", "17:30"), // Lör
7 => array("08:30", "17:30") // Sön
);
// Ställ in dagens datum samt när butiken stänger
$currentDateTime = new DateTime();
$compareDateTime = new DateTime('today ' . $opening_hours[intval(date('N'))][1]);
// Gör en kontroll om butiken är stängd först
if ($currentDateTime >= $compareDateTime) {
// Stängt idag, kolla hur länge som återstår till imorgon
$compareDateTime = new DateTime('tomorrow ' . $opening_hours[intval(date('N'))][0]);
$remaining_hours = $currentDateTime->diff($compareDateTime)->format('%h');
echo "Butiken öppnar om ca " . $remaining_hours . " timmar";
// Butiken är fortfarande öppen
// Kontrollera om det är mindre än en timme kvar, visa då tiden i minuter istället
} elseif (intval($currentDateTime->diff($compareDateTime)->format('%h%I')) < 60) {
// Fortfarande öppet, stänger om mindre än en timme
$remaining_minutes = $currentDateTime->diff($compareDateTime)->format('%i');
echo "Butiken stänger om ca " . $remaining_minutes . " min";
// Mer än en timme kvar, så visar tiden i timmar
} else {
$remaining_hours = $currentDateTime->diff($compareDateTime)->format('%h');
echo "Butiken är öppen i ca " . $remaining_hours . " timmar till.";
}