Switch met statement geeft verkeerde waarde terug
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)
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
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);
}
?>
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
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)
Gewijzigd op 23/10/2018 12:39:31 door Adoptive Solution
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:
Of simpeler als CUTOFFTIJDB en CUTOFFTIJDE toch maar één uur verschillen:
Gewijzigd op 23/10/2018 21:17:32 door Thomas van den Heuvel