Als anders syntaxis php. Voorwaardelijke if-instructie in PHP

(PHP4, PHP5, PHP7)

andersals, zoals de naam al doet vermoeden, is een combinatie van als En anders. Leuk vinden anders, het verlengt een als statement om een ​​andere statement uit te voeren als het origineel is als expressie resulteert in ONWAAR. Echter, in tegenstelling tot anders, zal het die alternatieve expressie alleen uitvoeren als de andersals voorwaardelijke expressie resulteert in WAAR. De volgende code zou bijvoorbeeld weergeven a is groter dan b , a gelijk aan b of a is kleiner dan b :

als ($a > $b) (
echo "a is groter dan b";
) elseif ($a == $b ) (
echo "a is gelijk aan b";
) anders (
echo "a is kleiner dan b";
}
?>

Het kunnen er meerdere zijn andersals s binnen hetzelfde als stelling. De eerste andersals expressie (indien aanwezig) die resulteert in WAAR zou worden geëxecuteerd. In PHP kun je ook "else if" (in twee woorden) schrijven en het gedrag zou identiek zijn aan dat van "elseif" (in een enkel woord). De syntactische betekenis is iets anders (als je bekend bent met C, is dit hetzelfde gedrag), maar het komt erop neer dat beide tot precies hetzelfde gedrag zouden leiden.

De andersals statement wordt alleen uitgevoerd als het voorafgaande als expressie en eventuele voorgaande andersals expressies geëvalueerd naar ONWAAR, en de huidige andersals expressie geëvalueerd naar WAAR.

Opmerking: Merk dat op andersals En anders als wordt alleen als exact hetzelfde beschouwd bij gebruik van accolades als in het bovenstaande voorbeeld. Wanneer u een dubbele punt gebruikt om uw als/andersals voorwaarden mag u niet uit elkaar gaan anders als in twee woorden, anders mislukt PHP met een parseerfout.

/* Onjuiste methode: */
als ($a > $b):
else if ($a == $b): // Zal niet compileren.
echo "De bovenstaande regel veroorzaakt een parseerfout.";
eindif;

/* Juiste methode: */
als ($a > $b):
echo $a. "is groter dan" $b;
elseif ($a == $b): // Let op de combinatie van de woorden.
echo $a. "is gelijk aan" $b;
anders:
echo $a. "is niet groter dan of gelijk aan". $b;
eindif;

De laatste keer schreef ik over bestaande operatortypen in PHP. Dit bericht begint een reeks gerelateerde berichten over besturingsstructuren (voorwaarden, lussen, enz.) in PHP. In deze notitie zullen we het hebben over voorwaardelijke verklaring IF..ELSE in PHP. Ik zal je kennis laten maken met de syntaxis van de if..else-constructie, en vervolgens specifieke voorbeelden gebruiken om naar de verschillende toepassingen te kijken. als het in PHP is.

Voorwaarden in PHP

In elk script kom je in PHP voorwaarden tegen. Dit is misschien wel het meest voorkomende type controlestructuren. Er zijn verschillende soorten conditionals in PHP. Vandaag zullen we het hebben over het ontwerp “ als-anders“.

Degenen onder u die bekend zijn met een andere programmeertaal zouden de logica achter deze constructie moeten kennen.

Hoe ziet de constructiesyntaxis eruit? als...anders in PHP:

$b) ( echo "Variabele A is groter dan B"; ) else ( echo "Variabele B is groter dan A"; ) ?>

In volgorde:

  • voorwaarde – er moet hier een uitdrukking zijn waarvan het resultaat gelijk moet zijn aan WAAR of vals. Bijvoorbeeld “$a< $b”, вызов какой-то функции.
  • WAAR(aan de voorwaarde is voldaan), wordt de eerste vertakking uitgevoerd (tot aan het trefwoord anders).
  • als het resultaat van de berekening dat is vals(aan de voorwaarde is niet voldaan), dan wordt de tweede branch uitgevoerd (na het trefwoord anders).

Takken anders, waarvan u nu weet dat deze wordt uitgevoerd als de voorwaarde niet waar is, is dat mogelijk niet. dan het ontwerp als zal de volgende vorm aannemen:

Als aan de voorwaarde is voldaan, gaan we naar binnen, als er niet aan wordt voldaan, dan laten we erdoor, en wat zit er in? als en ga verder.

Voorbeeld van het gebruik van if...else in PHP

$b) ( echo "Variabele A is groter dan B"; ) else ( echo "Variabele B is groter dan A"; ) ?>

Voer dit voorbeeld uit en kijk hoe het werkt. In ons geval wordt de lijnecho op het scherm weergegeven “Variabele B is groter dan A”, dit gebeurt omdat het vergelijkingsresultaat $a > $b gelijk aan vals(onwaar), omdat 5 is minder dan 10. Zoals je kunt zien, is alles eenvoudig.

Probeer verschillende waarden aan de variabelen toe te kennen $ een En $b en kijk hoe het resultaat verandert. Probeer deze constructie ook te herschrijven zonder te gebruiken anders.

Als iets niet helemaal duidelijk is, schrijf het dan in de reacties, we komen er wel uit :) Veel succes!

als constructie

Constructie syntaxis als vergelijkbaar ontwerp als in C-taal:

if (booleaanse expressie) instructie;
?>

Volgens PHP-expressies is de constructie als bevat een Booleaanse expressie. Als de Booleaanse expressie waar is ( WAAR), en vervolgens de exploitant die de constructie volgt als zal worden uitgevoerd, en als de logische expressie onwaar is ( vals), en daarna de volgende als de verklaring wordt niet uitgevoerd. Hier zijn enkele voorbeelden:

als ($a > $b) echo "de waarde van a is groter dan b";
?>

In het volgende voorbeeld, als de variabele $ een niet gelijk is aan nul, wordt de string “de waarde van a is waar” afgedrukt:

als ($a) echo "de waarde van a is waar";
?>

In het volgende voorbeeld, als $a nul is, wordt de string "de waarde van a is false" afgedrukt:

als (!$a) echo "de waarde van a is onwaar";
?>

Vaak heb je een blok met uitspraken nodig die worden uitgevoerd onder een bepaald voorwaardelijk criterium. Vervolgens moeten deze uitspraken tussen accolades worden geplaatst. {...} Voorbeeld:

als ($a > $b) (
echo "a is groter dan b";
$b = $a;
}
?>

In het bovenstaande voorbeeld wordt het bericht "a is groter dan b" weergegeven als $ een > $b en dan de variabele $ een wordt gelijkgesteld aan een variabele $b. Merk op dat deze operatoren worden uitgevoerd in als.

if (booleaanse_expressie):
ploegen;
elseif(andere_logische_expressie):
andere_opdrachten;
anders:
anders_opdrachten;
eindals

Let op de plaatsing van de dikke darm ( : )! Als u dit overslaat, wordt er een foutmelding gegenereerd. En nog iets: zoals gewoonlijk blokken andersals En anders kan worden weggelaten.

elseif-constructie

andersals is een combinatie van ontwerpen als En anders. Deze constructie verlengt de voorwaardelijke constructie als-anders.

Hier is de syntaxis van de constructie: andersals:

als (booleaanse_expressie_1)
exploitant_1;
elseif (booleaanse_expressie_2)
exploitant_2;
anders
exploitant_3;

Praktijkvoorbeeld van het gebruik van het ontwerp andersals:

als ($a > $b) (
echo "a is groter dan b";
) elseif ($a == $b ) (
echo "a is gelijk aan b";
) anders (
echo "a is kleiner dan b";
}
?>

12.09.2017

Nog niet


Hallo allemaal!
Laten we de basisprincipes van PHP helemaal opnieuw leren!
In deze les vertel ik je er meer over voorwaardelijke verklaring als anders. Letterlijk vertaald betekent if “als”, en else betekent “anders”. De if else-constructie zelf helpt bij het verifiëren van gegevens en het weergeven van het resultaat (berichten weergeven, een opdracht uitvoeren, de gebruiker doorsturen naar een geheime pagina of hem toegang geven tot het beheerderspaneel). Om te leren hoe je voorwaarden correct schrijft en de if else-constructie begrijpt, zal ik een voorbeeld uit de praktijk geven dat sterk lijkt op de if else-constructie.
Je geeft je hersenen een commando: zodra de wekker gaat (6.00 uur), moet ik opstaan, mijn gezicht wassen, mijn tanden poetsen, me aankleden en in galop naar mijn werk galopperen. Als de wekker om 6.00 uur niet afgaat, kun je slapen, omdat je niet naar je werk hoeft te rennen.
Heb je de if else-constructie opgemerkt? De voorwaarde is de ingestelde alarmtijd “6:00”. Als de wekker gaat, staan ​​we op en rennen naar ons werk, als de wekker niet gaat (anders vertellen ze nog steeds leugens), dan slapen we verder.
Er zijn veel van zulke levensvoorbeelden, bijvoorbeeld: als het regent, dan zit ik thuis, als het niet regent, dan pak ik de bal en ga voetballen.
Dus hoe kun je schrijf de if else-constructie? Heel eenvoudig.
Laten we stap voor stap te werk gaan en beginnen met een eenvoudige voorwaarde: de if-instructie.

Voor een beter begrip heb ik het if construct-diagram als afbeelding weergegeven:

Laten we nu proberen het praktijkvoorbeeld dat ik hierboven heb gegeven, om te zetten in php-code.

Als u een php-bestand met deze code opslaat en opent via een lokale server (zie), is het resultaat:

⇒ Code-uitleg:
In de voorwaarde heb ik de variabele $weather vergeleken met de waarde 'regen' (regel #3). In menselijke taal ziet deze code er als volgt uit: als de variabele $weather gelijk is aan de waarde "regen", dan moet je de tekst " Ik zit thuis". Ik wil je er trouwens aan herinneren (als je het vergeten bent) dat het gelijkteken wordt aangegeven door een dubbel gelijkteken, zoals dit (==). Als je een andere waarde naar de variabele $weather schrijft (regel nr. 2) Als er bijvoorbeeld sneeuw ligt, zal de browser de pagina leegmaken omdat niet aan de voorwaarden is voldaan.

→ SJABLOONCODE "indien CONSTRUCTIE":

→ Cheatsheet:

Gelijkheid: ==
Voorbeeld: als ($a == $b)

Niet gelijkheid: !=
Voorbeeld: als ($a != $b)

Meer: >
Voorbeeld: als ($a > $b)

Minder:<
Voorbeeld: als ($a< $b)

Groter dan of gelijk aan: >=
Voorbeeld: als ($a >= $b)

Kleiner dan of gelijk aan:<=
Voorbeeld: als ($a<= $b)

Logische "en": en
Voorbeeld: if ($a ==$b en $c !=$d)

Logische “of”: of , ||
Voorbeeld: als ($a ==$b || $c !=$d)

Laten we nu proberen een bericht weer te geven als niet aan de voorwaarden is voldaan, namelijk: als het regent, zit ik thuis, als het niet regent, pak ik de bal en ga voetballen. Laten we voor een beter begrip naar de onderstaande afbeelding kijken:

Laten we het diagram nu vertalen naar echte code:

Resultaat:

Ik pak de bal en ga voetballen

⇒ Code-uitleg:
In de voorwaarde heb ik de variabele $weather vergeleken met de waarde ‘regen’ (regel nr. 3), maar aangezien ik de waarde ‘zon’ heb toegewezen aan de variabele $weer (regel nr. 2), werd niet aan de voorwaarde voldaan ( de waarden zijn niet hetzelfde), wat betekent dat het tweede deel van de code (anders) zal werken:

Else ( echo "Ik neem de bal en ga voetballen"; //resultaat als de voorwaarde niet waar is)

→ SJABLOONCODE "if-else BOUW":

Dubbele if-else voorwaarde

Laten we verder gaan met iets complexers: dubbele if-else voorwaarde.
Laten we een voorbeeld gebruiken om een ​​wachtwoord- en inlogcontrole te maken.

Doel:
Maak een login- en wachtwoordverificatievoorwaarde. Als het wachtwoord of de login niet overeenkomen, wordt er een foutmelding weergegeven.

Laten we beginnen.
Laten we eerst twee variabelen $logo en $password maken met de bijbehorende waarden:

Houd er rekening mee dat we in de voorwaarde twee variabelen hebben gescheiden met de operator "AND". Dit betekent dat twee variabelen correct moeten zijn om aan de voorwaarde te voldoen, maar aangezien het wachtwoord in onze voorwaarde niet overeenkomt (sink nr. 4), betekent dit dat de voorwaarde onjuist is en ziet u dit bericht op het scherm:

Login of wachtwoord is onjuist

Als u de waarde van de variabele $password wijzigt in "123" (regel nr. 3), wordt volledig aan de voorwaarden voldaan (regel nr. 4):

Resultaat:

welkom bij het beheerderspaneel

Geneste if-else-constructies

Nesten- dit is wanneer er een andere structuur binnen de structuur is. Heb je het niet helemaal duidelijk uitgelegd? Het maakt niet uit, je zult alles begrijpen met een voorbeeld.

Doel:
Maak een login- en wachtwoordverificatievoorwaarde. Als het wachtwoord of de login niet overeenkomt, geef dan een foutmelding weer. Als ze overeenkomen, controleer dan het geheime woord. Als het geheime woord niet overeenkomt, geef dan een foutmelding weer. Als het overeenkomt, geef dan het bericht weer: " welkom bij het beheerderspaneel ".

Laten we beginnen:

Laten we eerst drie variabelen maken, $logo , $password en $x met de bijbehorende waarden:

Laten we nu een dubbele voorwaarde maken om de variabelen $logo en $password te controleren:

Nu onder de opmerking " // er zal nog een voorwaarde zijn met een geheim woord " (regel nr. 7) schrijf er nog een if-else constructie met de voorwaarde dat de variabele $x wordt gecontroleerd:

Omdat het geheime woord onjuist is (regel nr. 8), verschijnt het bericht op het scherm:

geheime woord is verkeerd

Als je de waarde van $x vervangt door "BlogGOOD", dan zal het geheime woord waar zijn:

Omdat de login en het wachtwoord correct zijn en dit betekent dat aan de voorwaarde is voldaan, werkte het eerste deel van de code, waarbij het nodig was om het geheime woord te controleren. Omdat het geheime woord waar is met de voorwaarde, ziet u een bericht op het scherm:

welkom bij het beheerderspaneel

→ SJABLOONCODE "GENESTE if-else-CONSTRUCT":

elseif voorwaardelijke operator

elseif-constructie is een combinatie van if- en else-constructies die helpen bij het controleren van verschillende voorwaarden achter elkaar.

Syntaxis:

Houd er rekening mee dat in de regels nr. 6 en nr. 10 twee woorden speciaal samen worden geschreven “elseif”; als u ze scheidt met een spatie “else if”, zal de code een fout genereren.

Ik zal u de werkende code laten zien met een selectie programmeerboeken.

Resultaat:

Je hebt een PHP-tutorial besteld

De elseif-methode kan ook worden geschreven als genest als anders geconstrueerd:

Het resultaat is hetzelfde, maar het is gemakkelijker om in de war te raken (ik raakte twee keer in de war in mijn eigen code).

Aanvulling op de les (nog niet nodig om te weten):

Er zijn nog verschillende opties voor het schrijven van de if else ( alternatieve syntaxis).
Ik ga een hele les voorbereiden over alternatieve syntaxis, waarin ik alles zal uitleggen en laten zien. Kijk nu maar eens.
Code nr. 1:

De variabele "$a" bevat de waarde 15

Huiswerk:
Probeer in plaats van gelijkheid (== ) in de voorwaarde ongelijkheid (!= ) te plaatsen of probeer het met groter dan minder tekens:

en vervang ook de operator "AND" door "OR".

Dat was alles, ik kijk er naar uit je te zien bij de volgende lessen! Abonneer je op blogupdates!

Vorig bericht
Volgende invoer

De twee belangrijkste uitspraken die voorwaardelijke vertakkingsstructuren bieden, zijn if en switch. De meest gebruikte if-instructie wordt gebruikt in voorwaardelijke sprongstructuren. Aan de andere kant wordt in bepaalde situaties, vooral als je door een van de vele vertakkingen moet navigeren, afhankelijk van de waarde van een enkele expressie, en het gebruik van een aantal if-statements tot complexere code leidt, de switch-instructie handiger. .

Voordat u deze operatoren bestudeert, moet u logische expressies en bewerkingen begrijpen.

Logische bewerkingen

Met logische bewerkingen kunt u logische waarden (ook wel waarheidswaarden genoemd) combineren om nieuwe logische waarden te produceren. Zoals je in de onderstaande tabel kunt zien, ondersteunt PHP standaard logische operatoren (and, or, not, en xor), waarbij de eerste twee alternatieve versies hebben.

PHP Logische bewerkingen
Operatie Beschrijving
En Een bewerking waarvan het resultaat waar is dan en slechts dan als beide operanden waar zijn
of Een bewerking waarvan het resultaat waar is als een van de operanden (of beide operanden) waar is
! Een bewerking waarvan het resultaat waar is als de enige operand (die rechts van het bewerkingsteken staat) onwaar is, en onwaar als de operand waar is
xor Een bewerking waarvan het resultaat waar is als een van de operanden (maar niet beide) waar is
&& Hetzelfde als de operator en, maar bindt de operanden strakker dan deze operator
|| Hetzelfde als de operator of, maar bindt de operanden strakker dan deze operator

Bewerkingen && en || zou bekend moeten zijn bij C-programmeurs. wordt meestal niet genoemd omdat het de negatie wordt van de operand waarop het wordt toegepast.

Om te testen of beide operanden TRUE zijn, gebruik je de AND-operator, die ook kan worden geschreven als een dubbel ampersand (&&). Zowel de AND- als de &&-operator zijn logische operatoren. Het enige verschil is dat de &&-operator een hogere prioriteit heeft dan de AND-operator. Hetzelfde geldt voor de operatoren OR en ||. De AND-operator retourneert alleen WAAR als beide operanden WAAR zijn; anders wordt FALSE geretourneerd.

Om te controleren of ten minste één operand TRUE is, gebruik je de OR-operator, die ook kan worden geschreven als een dubbele verticale lijn (||). Deze operator retourneert WAAR als ten minste één van zijn operanden WAAR is.

Wanneer u de OR-operator in een programma gebruikt, kunnen subtiele logische fouten optreden. Als PHP detecteert dat de eerste operand TRUE is, zal het de waarde van de tweede operand niet evalueren. Dit bespaart uitvoeringstijd, maar u moet er wel voor zorgen dat de code waarvan het programma afhankelijk is om correct te kunnen werken, niet in de tweede operand wordt geplaatst.

Met de XOR-operator kunt u controleren of slechts één van de operanden (maar niet beide) TRUE is. Deze operator retourneert WAAR als één en slechts één van zijn operanden WAAR is. Als beide operanden TRUE zijn, retourneert de operator FALSE.

U kunt een logische waarde omkeren met behulp van de NOT-operator, die vaak wordt geschreven als een uitroepteken (!). Het retourneert TRUE als de operand FALSE is en FALSE als de operand TRUE is.

De onderstaande tabel toont enkele Booleaanse expressies en hun resultaten:

Vergelijkingsoperaties

De onderstaande tabel toont vergelijkingsbewerkingen die kunnen worden gebruikt met getallen of tekenreeksen:

Vergelijkingsoperaties
Operatie Naam Beschrijving
== Gelijk aan Een bewerking waarvan het resultaat waar is als de operanden gelijk zijn en anders onwaar
!= Niet gelijk Een bewerking waarvan het resultaat onwaar is als de operanden gelijk zijn en anders waar
< Minder Een bewerking waarvan het resultaat waar is als de linker operand kleiner is dan de rechter operand, en anders onwaar
> Meer Een bewerking waarvan het resultaat waar is als de linker operand groter is dan de rechter operand, en anders onwaar
<= Kleiner dan of gelijk aan Een bewerking waarvan het resultaat waar is als de linker operand kleiner is dan of gelijk is aan de rechter operand, en anders onwaar
>= Groter dan of gelijk aan Een bewerking waarvan het resultaat waar is als de linker operand groter is dan of gelijk is aan de rechter operand, en anders onwaar
=== Identiek Een bewerking waarvan het resultaat waar is als beide operanden gelijk zijn en van hetzelfde type zijn, en anders onwaar

Een veel voorkomende fout die u moet maken, is de toewijzingsoperator (=) niet te verwarren met de vergelijkingsoperator (==).

Operatieprioriteit

Natuurlijk mag men een programmeerstijl waarin de volgorde van de bewerkingen voornamelijk wordt bepaald door het gebruik van voorrangsregels niet overmatig gebruiken, aangezien code die in deze stijl is geschreven moeilijk te begrijpen is voor degenen die deze later bestuderen, maar er moet worden opgemerkt dat vergelijking bewerkingen hebben een hogere prioriteit dan logische bewerkingen. Dit betekent dat een instructie met een controle-expressie zoals hieronder wordt weergegeven

PHP-code $var1 = 14; $var2 = 15; als (($var1< $var2) && ($var2 < 20)) echo "$var2 больше $var1 но меньше 20";

kan worden herschreven als

PHP-code ...als ($var1< $var2 && $var2 < 20) ...

if-else verklaring

Instructies als staat toe dat een codeblok wordt uitgevoerd als de voorwaardelijke expressie in deze instructie WAAR oplevert; anders wordt het codeblok niet uitgevoerd. Elke expressie kan als voorwaarde worden gebruikt, inclusief tests voor waarden die niet nul zijn, gelijkheid, NULL waarbij variabelen betrokken zijn en waarden die door functies worden geretourneerd.

Het maakt niet uit uit welke individuele voorwaardelijke straffen de voorwaardelijke straf bestaat. Als de voorwaarde waar is, wordt de programmacode tussen accolades (()) uitgevoerd. Anders negeert PHP het en gaat verder met het controleren van de tweede voorwaarde, waarbij alle voorwaardelijke waarden die je hebt opgeschreven worden gecontroleerd totdat de instructie wordt gevonden anders, waarna het dit blok automatisch zal uitvoeren. De else-instructie is optioneel.

De syntaxis van de if-instructie is:

If (voorwaardelijke expressie) (blok programmacode;)

Als het resultaat van het evalueren van een voorwaardelijke expressie TRUE is, zal het blok programmacode dat zich erna bevindt, worden uitgevoerd. In het volgende voorbeeld, als $username is ingesteld op "Admin", wordt een welkomstbericht weergegeven. Anders gebeurt er niets:

PHP-code $gebruikersnaam = "Beheerder"; if ($gebruikersnaam == "Admin") ( echo "Welkom op de beheerderspagina."; )

Als een blok programmacode slechts één instructie bevat, zijn accolades optioneel. Het is echter een goede gewoonte om ze altijd te gebruiken, omdat ze de code gemakkelijker lezen en bewerken maken.

De optionele else-instructie is een codeblok dat standaard wordt uitgevoerd wanneer de voorwaardelijke expressie FALSE oplevert. De else-instructie kan niet afzonderlijk van de if-instructie worden gebruikt, omdat else geen eigen voorwaardelijke expressie heeft. Dat wil zeggen, else en if moeten altijd samen zijn in uw code:

if en else-verklaringen $gebruikersnaam = "geen beheerder"; if ($gebruikersnaam == "Admin") ( echo "Welkom op de beheerderspagina."; ) else ( echo "Welkom op de gebruikerspagina."; )

Vergeet niet om een ​​codeblok in een if-instructie af te sluiten met een accolade als u een accolade aan het begin van het blok plaatst. Het else-blok moet ook accolades openen en sluiten, net als het if-blok.

Dit is allemaal goed, behalve als je meerdere voorwaarden achter elkaar moet controleren. Instructies zijn hiervoor geschikt andersals. Hiermee kunnen aanvullende voorwaarden worden getest totdat true wordt gevonden of het else-blok wordt bereikt. Voor elke elseif-instructie is een eigen codeblok geplaatst, onmiddellijk na de voorwaardelijke expressie van de elseif-instructie. De elseif-instructie komt na de if-instructie en vóór de else-instructie, als die er is.

De syntaxis van de elseif-instructie is iets ingewikkelder, maar het volgende voorbeeld zal u helpen het te begrijpen:

Meerdere voorwaarden controleren $gebruikersnaam = "Gast"; if ($gebruikersnaam == "Beheerder") ( echo "Welkom op de beheerderspagina."; ) elseif ($gebruikersnaam == "Gast") ( echo "Bekijken niet beschikbaar."; ) else ( echo "Welkom op de pagina gebruiker."; )

Hier worden twee voorwaarden gecontroleerd en worden, afhankelijk van de waarde van de variabele $username, verschillende acties uitgevoerd. En er is nog steeds een mogelijkheid om iets te doen als de waarde van de variabele verschilt van de eerste twee.

Ternaire operator?:

De ?: operator is een ternaire (ternaire) operator die drie operanden nodig heeft. Het werkt vergelijkbaar met een if-instructie, maar retourneert de waarde van een van de twee expressies. De expressie die wordt geëvalueerd, wordt bepaald door de voorwaardelijke expressie. De dubbele punt (:) dient als expressiescheidingsteken:

(voorwaarde) ? evalueren_if_condition_true: evalueren_if_condition_false;

In het onderstaande voorbeeld wordt een waarde gecontroleerd en worden verschillende tekenreeksen geretourneerd, afhankelijk van of deze WAAR of ONWAAR is:

Een bericht maken met de operator ? $ingelogd_in = WAAR; $user = "Igor"; $banner = (!$ingelogd_in) ? "Register!" : "Welkom terug, $user!"; echo $banner;

Het is overduidelijk dat de bovenstaande verklaring equivalent is aan de volgende verklaring:

PHP-code $ingelogd_in = WAAR; $user = "Igor"; if (!$logged_in) ( $banner = "Registreer!"; ) else ( $banner = "Welkom terug, $user!"; ) echo $banner;

schakel verklaring

Instructies schakelaar vergelijkt een expressie met meerdere waarden. In de regel wordt een variabele als expressie gebruikt, afhankelijk van de waarde waarvan een bepaald codeblok moet worden uitgevoerd. Stel je bijvoorbeeld een variabele $action voor die de waarden "ADD", "MODIFY" (wijzigen) en "DELETE" kan hebben. Met de switch-instructie kunt u eenvoudig het codeblok definiëren dat voor elk van deze waarden moet worden uitgevoerd.

Om het verschil tussen if- en switch-instructies te laten zien, gaan we een variabele testen aan de hand van meerdere waarden. Het onderstaande voorbeeld toont programmacode die een dergelijke controle implementeert op basis van de if-instructie, en in het volgende voorbeeld op basis van de switch-instructie:

Testen tegen een van meerdere waarden (if-statement) if ($action == "ADD") ( echo "Voer een optelling uit."; echo "Het aantal instructies in elk blok is onbeperkt."; ) elseif ($action == "MODIFY") ( echo "Voer een wijziging uit ."; ) elseif ($action == "DELETE") ( echo "Voer verwijdering uit."; ) Testen tegen een van meerdere waarden (switch-instructie) switch ($action) ( case "ADD": echo "Voer een optelling uit."; echo "Het aantal instructies in elk blok is onbeperkt."; break; case "MODIFY": echo "Voer een wijziging uit."; break; case "DELETE" : echo "Voer verwijdering uit.";

De switch-instructie neemt de waarde naast het switch-trefwoord en begint deze te vergelijken met alle waarden naast de trefwoorden geval, in de volgorde van hun locatie in het programma. Als er geen match wordt gevonden, wordt geen van de blokken uitgevoerd. Zodra er een match is gevonden, wordt het bijbehorende codeblok uitgevoerd. De onderstaande codeblokken worden ook uitgevoerd - tot het einde van de switch-instructie of tot het trefwoord pauze. Dit is handig voor het organiseren van een proces dat uit meerdere opeenvolgende stappen bestaat. Als de gebruiker al enkele stappen heeft voltooid, kan hij het proces voortzetten vanaf het punt waar hij was gebleven.

De expressie naast de switch-instructie moet een waarde van een primitief type retourneren, zoals een getal of tekenreeks. Een array kan alleen worden gebruikt als een afzonderlijk element dat een waarde van een elementair type heeft.

Standaardselectie

Als de waarde van de voorwaardelijke expressie niet overeenkomt met een van de opties die in de case-instructies worden voorgesteld, kunt u met de switch-instructie in dit geval iets doen, vergelijkbaar met de else-instructie van de if, elseif, else-constructie. Hiervoor dient u als laatste optie in de keuzelijst een instructie aan te maken standaard:

Een foutmelding maken met behulp van de standaardinstructie $actie = "VERWIJDEREN"; switch ($action) ( case "ADD": echo "Voer een optelling uit."; echo "Het aantal instructies in elk blok is onbeperkt."; break; case "MODIFY": echo "Voer een wijziging uit."; break; case "DELETE": echo "Voer verwijdering uit."; standaard: echo "Fout: $action-opdracht is niet geldig, "alleen de opdrachten ADD, MODIFY en DELETE kunnen worden gebruikt.";

Naast de gebruikelijke syntaxis ondersteunt de switch-instructie een alternatieve syntaxis: een trefwoordconstructie schakelaar/eindschakelaar, waarbij het begin en het einde van de verklaring worden gedefinieerd in plaats van accolades:

De switch-instructie eindigt met het trefwoord endswitch switch ($action): case "ADD": echo "Voer toevoegen uit.";

echo "Het aantal instructies in elk blok is onbeperkt.";

pauze; case "MODIFY": echo "Wijziging uitvoeren.";

pauze; case "DELETE": echo "Voer verwijdering uit."; pauze; standaard: echo "Fout: $action-opdracht is niet geldig, ".
"Alleen de opdrachten ADD, MODIFY en DELETE kunnen worden gebruikt."; eindschakelaar;
Uitvoering onderbreken
"; }

Als alleen een codeblok dat overeenkomt met een specifieke waarde moet worden uitgevoerd, moet het sleutelwoord break aan het einde van dat blok worden ingevoegd. Wanneer de PHP-interpreter het break-trefwoord tegenkomt, zal hij doorgaan met het uitvoeren van de regel na de afsluitende accolade van de switch-instructie (of het endswitch-trefwoord). Maar als u de break-instructie niet gebruikt, gaat de controle door in de daaropvolgende case-takken van de switch-constructie. Hieronder ziet u een voorbeeld:

Wat gebeurt er als er geen break-instructies zijn

$action="MONTEER BESTELLING"; switch ($action) ( case "MONTEER BESTELLING": echo "Monteer bestelling.

"; case "PAKKET": echo "Pack.

"; case "SHIP": echo "Leveren aan de klant.

Als de variabele $action is ingesteld op "ASSEMBLE ORDER", is het resultaat van dit fragment als volgt: