Archief - probleempje in php

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

wat

Legacy Member
dag iedereen!
ik heb een probleempje in mijn php en ik vind het niet direct

<?php
$uur=time("G");
if ($uur>=6 AND $uur<12){
echo "Goeie morgen en welkom bij ddbikes";}
elseif ($uur>=12 AND $uur<18){
echo "Goeie middag en welkom bij ddbikes";}
elseif ($uur>=18 AND $uur<=23){
echo "Goeie avond en welkom bij ddbikes";}
else{
echo "Goeie nacht bij ddbikes";}
?>

dit is mijn code
wanneer ik deze pagina nu laadt krijg ik steeds mijn else te zien :(
ik weet echt niet waar het aan zou kunnen liggen
groetjes

Messias.

Legacy Member
Ik ken niks van php, maar twee minuten snuffelen in de documentatie leert mij dat het date("G") is in plaats van time("G"). De functie time() neemt geen parameters.

wat

Legacy Member
idd :(
man man man hoe lomp kan ik zijn :( gewoon overgekeken!
bedankt!!!!

Kemblin

Legacy Member
blackrabbit zei:
Geef dan eens de code van hou gij het zou doen?

Zo zeker? Ziet er toch niet zo mooi uit met die type-conversion, weet niet of ze nodig is maar ik dacht van wel in een switch structuur

PHP:
$uur = date("G");
switch ((int)$uur) {
    case ($uur >= 6 && $uur < 12):
        echo "Goeie morgen en welkom bij ddbikes";
        break;
    case ($uur >= 12 && $uur < 18):
        echo "Goeie middag en welkom bij ddbikes";
        break;
    case ($uur >= 18 && $uur <= 23):
        echo "Goeie avond en welkom bij ddbikes";
        break;
	default:
		echo "Goeie nacht bij ddbikes";
}

Kemblin

Legacy Member
Cycloon zei:
Redelijk foute switch...

tjah ik zeg niet dat ik het met een switch zou doen, maar volgens PHP: switch - Manual zou het zo toch moeten lukken. Het principe van een switch wordt zo idd vrij hard teniet gedaan. Ik zou toch ook gewoon een if-else prefereren.

Kemblin

Legacy Member
blackrabbit zei:
Zo zou ik het alvast niet doen ;-)

Maar ik wacht wel even op teh_NiHiLiM

ik zie anders niet veel andere manieren met een switch buiten 24 case statements neer te zetten

Cycloon

Legacy Member
Er zijn zelden momenten waarop een switch beter zou zijn dan een if/else structuur. Maar ben ook benieuwd met wat teh_NiHiLiM op de proppen zal komen.

In andere talen kun je vaak wel ranges enzo ingeven in de switch, dan zou het nog nuttig kunnen zijn, maar in php ziet ik niet direct een voordeel.

Joeshoe

Legacy Member
Ifelse structuur is even goed als een switch in php
Er is gewoon geen voordeel bij de ene of de andere, het is gewoon voorkeur van wat je het liefst ziet in je code.

killgore

Legacy Member
Cycloon zei:
Er zijn zelden momenten waarop een switch beter zou zijn dan een if/else structuur. Maar ben ook benieuwd met wat teh_NiHiLiM op de proppen zal komen.

In andere talen kun je vaak wel ranges enzo ingeven in de switch, dan zou het nog nuttig kunnen zijn, maar in php ziet ik niet direct een voordeel.

Voornaamste reden: switch leest makkelijker meestal.

extra technische reden : nesting depth. Hoewel je een if/else vaak zo typt:
Code:
if(...)
{
    ...
}
else if(...)
{   
    ...
}
else if(...)
{   
    ...
}
else
{   
    ...
}
wat dus maar een nesting depth van 1 lijkt, wordt dit in veel talen geïnterpreteerd als:
Code:
if(...)
{
    ...
}
else
{
    if(...)
    {   
        ...
    }
    else
    {
        if(...)
        {   
            ...
        }
        else
        {   
            ...
        }
    }
}

Wat duidelijk maakt dat de nesting ietsje dieper is dan op het eerste zicht blijkt. Als je taal/compiler/interpreter nesting beperkt dan is het soms wel noodzakelijk een switch te gebruiken (die inherent niet met zoiets werkt) en geen if/else structuur :-).

nu, gezien php een ingebouwde elseif heeft die volgens mij intern niet nest (lang geleden dat ik nog met zend ben bezig geweest) heeft dat er geen last van en is er dus geen enkele technische reden om een switch boven een if/elseif structuur te verkiezen, of toch geen die ik direct nog uit men duim kan zuigen ^^.

blackrabbit

Legacy Member
Waarom zou dat 'nesten' een probleem zijn? Een beetje deftige compiler springt wel meteen naar de 'geneste' if indien voorwaarde==false.


Anyway, ik wacht nog steeds op teh_NiHiLiM :)

teh_NiHiLiM

Legacy Member
howly shit :eek:

k'heb ier precies wa verwachtingen gecreëerd :help:


blijkbaar ben ik makkelijker geneigd om een switch te gebruiken ivglt de meeste anderen ^^
Waarom ?

zoals killgore zegt: leest makkelijker / is overzichtelijker.
is ook vlotter uit te breiden

geen uber-whitty oplossing waar iedereen op gehoopt had :doc:


best grappig zo'n uitgebreide discussie voor zo'n 'kleinigheidje' ^^

Cycloon

Legacy Member
Hoezo is de switch case overzichtelijker?

Ze wordt totaal foutief gebruikt en bestaat uit meer regels, ik denk dat sommige mensen toch totaal andere dingen verstaan onder overzichtelijker dan mij.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan