Switch met statement geeft verkeerde waarde terug

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Yoeri Achterbergen

Yoeri Achterbergen

23/10/2018 12:18:30
Quote Anchor link
Hallo,


Deze switch heb ik gemaakt voor de tekst terug te geven of de telefoonlijnen open of gesloten zijn.
De switch zorgt voor de dagen en het if else statement voor het uur waarin de tekst veranderd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
function phone_schedule(){
date_default_timezone_set('Europe/Amsterdam');

define('CUTOFFTIJDB', 12);
define('CUTOFFTIJDE', 13);
$weekdagphone = (int) date('w');
$uur = (int) date('G');



switch ($weekdagphone) {
    case
6:  // zaterdag
            if ($uur > CUTOFFTIJDB && $uur < CUTOFFTIJDE ) {
                $phoneline = 'Lijnen zijn open';      
            }
else {
               $phoneline = 'Lijnen zijn gesloten';
            }

    break;

        case
0:  // zondag
                $phoneline = 'Lijnen zijn gesloten';      
    break;

        case
1:  // maandag
                    $phoneline = 'Lijnen zijn gesloten';  
    break;

        case
2:  // dinsdag
        if ($uur > CUTOFFTIJDB && $uur < CUTOFFTIJDE ) {
                $phoneline = 'Lijnen zijn open';      
            }
else {
               $phoneline = 'Lijnen zijn gesloten';
            }

    break;

        case
3:  // woensdag
        if ($uur > CUTOFFTIJDB && $uur < CUTOFFTIJDE ) {
                $phoneline = 'Lijnen zijn open';      
            }
else {
               $phoneline = 'Lijnen zijn gesloten';
            }

       break;

        case
4:  // donderdag
        if ($uur > CUTOFFTIJDB && $uur < CUTOFFTIJDE ) {
                $phoneline = 'Lijnen zijn open';      
            }
else {
               $phoneline = 'Lijnen zijn gesloten';
            }

       break;

        case
5:  // vrijdag
            if ($uur > CUTOFFTIJDB && $uur < CUTOFFTIJDE ) {
                $phoneline = 'Lijnen zijn open';      
            }
else {
               $phoneline = 'Lijnen zijn gesloten';
            }

       break;
}


return array('phoneline' => $phoneline);
}

?>


Commentaar heb ik er even in het Nederlands bijgezet.

Nu blijf ik steeds terugkrijgen "lijnen zijn gesloten", terwijl de waarde tussen 12 en 13 ligt toch?
Gewijzigd op 23/10/2018 12:19:14 door Yoeri Achterbergen
 
PHP hulp

PHP hulp

22/12/2024 11:47:21
 
Adoptive Solution

Adoptive Solution

23/10/2018 12:38:45
Quote Anchor link
De vergelijkingen zijn altijd FALSE.

Als het 12 uur is, is het NIET groter dan tijd B en WEL kleiner dan tijd E = FALSE
Als het 13 uur is, is het NIET kleiner dan tijd E en WEL groter dan tijd B = FALSE

Probeer >= en <=

Toevoeging op 23/10/2018 13:05:12:

Mag het ook korter?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
    $phoneline
= 'Lijnen zijn gesloten';
    if ( $weekdagphone >= 2 ) {
        if ( $uur >= CUTOFFTIJDB && $uur <= CUTOFFTIJDE ) {
            $phoneline = 'Lijnen zijn open';      
        }
    }

?>
Gewijzigd op 23/10/2018 12:39:31 door Adoptive Solution
 
Thomas van den Heuvel

Thomas van den Heuvel

23/10/2018 13:54:29
Quote Anchor link
Bovenstaande code werkt niet helemaal naar behoren waarschijnlijk? Dit geeft tot en met 13:59:59 nog steeds "Lijnen zijn open".

Misschien is het ook handig om met een "half open domein" te werken, dus een van-en-met tot-en-zonder: [begin, eind>. En omdat begin- en einduur achter elkaar vallen zou je ook simpelweg met CUTOFFTIJDB kunnen vergelijken?

En wellicht nog wat intuïtiever: schrijf het in de volgorde zoals het in de tijdlijn valt, zodat alle groter dan / kleiner dan tekens dezelfde kant op wijzen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if (CUTOFFTIJDB <= $uur && $uur < CUTOFFTIJDE) {
    // ...
}
?>

Of simpeler als CUTOFFTIJDB en CUTOFFTIJDE toch maar één uur verschillen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if (CUTOFFTIJDB == $uur) {
    // ...
}
?>
Gewijzigd op 23/10/2018 21:17:32 door Thomas van den Heuvel
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.