verkorte if
In plaats van:
Ja, ik gebruik deze vaak als iets inline is, in een echo bijvoorbeeld.
ja, bij een if in een expressie.
En in bovengenoemd voorbeeld (dus niet bij een echo of in een expressie) welke van deze 2 versies zouden jullie dan gebruiken?
sinds wanneer is de rechterkant van de = geen expressie?
Euh... dan heb ik je verkeerd begrepen. Wat bedoel je dan precies? Met een expressie bedoel je dan eigenlijk een toewijzing waarbij foo = x of y ?
language.expressions (gelukkig hebben we allemaal leren googlen...)
Om op de vraag terug te komen... als je dus een waarde wil toekennen aan een variabele, en die waarde kan 2 opties hebben dan gebruik je de verkorte if -statement? En met welke reden doe je dat dan... omdat het minder typwerk is?
Nee, vind het onduidelijk, met de if kan je gelijk zien in je script waar het is en wat het doet.
Net als Aar, inline. Dat werkt een stuk fijner en overzichtelijker dan; echo if { echo } else { echo } echo. Maar ook voor andere korte echo's gebruik ik het wel.
Zelf gebruik ik het eigenlijk vooral om regels code te besparen. Zoals je in het voorbeeld in mijn eerste bericht ziet: 5 regels versus 1 regel. Maar gek genoeg is het toch iets trager.
@Ward:
Grappige manier hoe jij dat zo onder elkaar schrijft. Zet je het altijd op deze manier onder elkaar? Ook als het een korte statement betreft zoals dit?
Er is trouwens nog een manier geloof ik:
In dit geval als $foo evalueert naar true, dan krijgt $foo de waarde van $foo (ofwel, de waarde blijft ongewijzigd). En als ie niet evalueert naar true dan wordt ie false.
Je kan dan zoiets doen:
Ik weet alleen niet of ik dit wel zo'n mooie methode vindt, want je evalueert nu een string-waarde naar true. Wat vinden jullie daarvan?
Nee, alleen als de gehele expressie fors langer wordt dan 80 karakters (à la PSR) of als de logische test of een van de true/false-uitkomsten complex is.
Verder gebruik ik de ternary operator alleen bij een eenvoudige toewijzing met = of een echo. In overige gevallen ben ik het helemaal met Snelle Jaap eens en is een uitgeschreven if/elseif/else netter en praktischer.
Dus als de gehele expressie lang wordt, dan handhaaf je nog wel steeds de verkorte versie? Je zou dan ook kunnen overstappen op de normale versie, maar dat doe jij dus niet als ik je goed begrijp?
>> Verder gebruik ik de ternary operator alleen bij een eenvoudige toewijzing met = of een echo. In overige gevallen ben ik het helemaal met Snelle Jaap eens en is een uitgeschreven if/elseif/else netter en praktischer.
Mee eens, hoewel het in een return ook nog wel eens handig kan zijn.
Ozzie PHP op 19/03/2014 13:06:23:
De grap is... het is dus iets trager dan een if/else vergelijking. Ik dacht altijd dat het juist sneller was. Overigens is het verwarloosbaar trager, maar stel dat je het in een loop zet, dan is het de moeite waard om even een meting te doen wat sneller is, een normaal if-statement of een verkort if-statement.
Zucht ..........
Om op het onderwerp terug te komen: een verkorte if is handig als je een simpel if statement hebt (dus niet té ingewikkeld) en als je van plan bent om het resultaat van je if te returnen.
Code (php)
Niet fraai als je vasthoudt aan het purisme "geen if zonder else", maar wel vaak gebruikt.
Want???? Ik geef gewoon extra informatie.
>> Om op het onderwerp terug te komen: een verkorte if is handig als je een simpel if statement hebt (dus niet té ingewikkeld) en als je van plan bent om het resultaat van je if te returnen.
Je hoeft het resultaat helemaal niet te returnen.
@Ward:
Inderdaad, die methode gebruik ik zelf ook vaak. Als een if-statement op 1 regel past zoals in dit geval, dan zou ik zelfs dit doen:
Maar zoals je ziet heb je nu 2x return. Dan is zo'n ternary operator wellicht een mooiere oplossing.
Wat gebeurd er dan als het 'else' is? Dan geeft die een foutmelding ofzo?
Wat bedoel je Jaap? Graag een voorbeeld.
Maar wat gebeurd er als die om wat voor rede dan ook $foo niet kan returnen, wat voor foutmelding geeft die dan?
Waarom zou ie foo niet kunnen returnen? Je controleert eerst met isset() of $foo bestaat. Als foo bestaat, dan kun je 'm ook returnen. Als $foo niet bestaat, dan gaat ie verder op de volgende regel. Snap je?