PHP
Besturingsstructuren
Zoeken…
Alternatieve syntaxis voor besturingsstructuren
PHP biedt een alternatieve syntaxis voor sommige besturingsstructuren: if
, while
, for
, foreach
en switch
.
In vergelijking met de normale syntaxis, het verschil, dat de openingsaccolade wordt vervangen door een dubbele punt ( :
) en de sluitaccolade vervangen door endif;
endwhile;
, endfor;
, endforeach;
of endswitch;
respectievelijk. Zie het onderwerp over alternatieve syntaxis voor besturingsstructuren voor individuele voorbeelden.
if ($a == 42):
echo "The answer to life, the universe and everything is 42.";
endif;
Meerdere elseif
instructies met korte syntaxis:
if ($a == 5):
echo "a equals 5";
elseif ($a == 6):
echo "a equals 6";
else:
echo "a is neither 5 nor 6";
endif;
PHP Manual - Besturingsstructuren - Alternatieve syntaxis
terwijl
while
lus een codeblok doorloopt, zolang een opgegeven voorwaarde waar is.
$i = 1;
while ($i < 10) {
echo $i;
$i++;
}
Uitgang: 123456789
Zie het onderwerp Loops voor gedetailleerde informatie.
doen terwijl
do-while
lus voert eerst in elk geval eenmaal een codeblok uit en doorloopt vervolgens dat codeblok zolang een opgegeven voorwaarde waar is.
$i = 0;
do {
$i++;
echo $i;
} while ($i < 10);
Output: `12345678910`
Zie het onderwerp Loops voor gedetailleerde informatie.
ga naar
Met de goto
operator kunt u naar een andere sectie in het programma springen. Het is beschikbaar sinds PHP 5.3.
De goto-instructie is een goto gevolgd door het gewenste goto MyLabel;
: goto MyLabel;
.
Het doel van de sprong wordt gespecificeerd door een label gevolgd door een dubbele punt: MyLabel:
In dit voorbeeld wordt Hello World!
afgedrukt Hello World!
:
<?php
goto MyLabel;
echo 'This text will be skipped, because of the jump.';
MyLabel:
echo 'Hello World!';
?>
verklaren
declare
wordt gebruikt om een uitvoeringsrichtlijn voor een codeblok in te stellen.
De volgende richtlijnen worden erkend:
Stel bijvoorbeeld vinkjes in op 1:
declare(ticks=1);
Om de strikte strict_types
schakelen, wordt de declare
instructie gebruikt met de strict_types
declaratie:
declare(strict_types=1);
als anders
Met de instructie if
in het bovenstaande voorbeeld kunt u een codefragment uitvoeren wanneer aan de voorwaarde is voldaan. Wanneer u een codefragment wilt uitvoeren, wanneer niet aan de voorwaarde is voldaan, verlengt u het if
met een else
.
if ($a > $b) {
echo "a is greater than b";
} else {
echo "a is NOT greater than b";
}
PHP Manual - Besturingsstructuren - Anders
De ternaire operator als steno-syntaxis voor if-else
De ternaire operator evalueert iets op basis van een voorwaarde die waar is of niet. Het is een vergelijkingsoperator en wordt vaak gebruikt om een eenvoudige if-else-voorwaarde in een kortere vorm uit te drukken. Hiermee kunt u snel een voorwaarde testen en vervangt vaak een meerregelige if-instructie, waardoor uw code compacter wordt.
Dit is het bovenstaande voorbeeld met een ternaire uitdrukking en variabele waarden: $a=1; $b=2;
echo ($a > $b) ? "a is greater than b" : "a is NOT greater than b";
Uitgangen: a is NOT greater than b
.
opnemen en vereisen
vereisen
require
is vergelijkbaar met include
, behalve dat het een fatale E_COMPILE_ERROR
veroorzaakt bij een fout. Als de require
mislukt, wordt het script gestopt. Wanneer het include
niet lukt, zal het niet stoppen van het script en slechts emit E_WARNING
.
require 'file.php';
PHP Manual - Besturingsstructuren - Vereisen
omvatten
De include
instructie bevat en evalueert een bestand.
./variables.php
$a = 'Hello World!';
. / Main.php`
include 'variables.php';
echo $a;
// Output: `Hello World!`
Wees voorzichtig met deze aanpak, omdat het als een codegeur wordt beschouwd, omdat het opgenomen bestand de hoeveelheid en inhoud van de gedefinieerde variabelen in het gegeven bereik wijzigt.
U kunt ook include
bestand opnemen dat een waarde retourneert. Dit is uiterst handig voor het afhandelen van configuratie-arrays:
configuration.php
<?php
return [
'dbname' => 'my db',
'user' => 'admin',
'pass' => 'password',
];
main.php
<?php
$config = include 'configuration.php';
Deze aanpak voorkomt dat het opgenomen bestand uw huidige bereik vervuilt met gewijzigde of toegevoegde variabelen.
PHP Manual - Control Structures - Opnemen
include & vereisen kan ook worden gebruikt om waarden toe te wijzen aan een variabele wanneer iets per bestand wordt geretourneerd.
Voorbeeld:
include1.php-bestand:
<?php
$a = "This is to be returned";
return $a;
?>
index.php-bestand:
$value = include 'include1.php';
// Here, $value = "This is to be returned"
terugkeer
De return
instructie keert het programmabestuur terug naar de aanroepfunctie.
Wanneer return
vanuit een functie wordt aangeroepen, wordt de uitvoering van de huidige functie beëindigd.
function returnEndsFunctions()
{
echo 'This is executed';
return;
echo 'This is not executed.';
}
Wanneer u returnEndsFunctions();
u krijgt de uitvoer This is executed
;
Wanneer return
wordt opgeroepen vanuit een functie met en argument, wordt de uitvoering van de huidige functie beëindigd en wordt de waarde van het argument teruggestuurd naar de aanroepende functie.
voor
for
loops worden meestal gebruikt als je een stuk code hebt dat je een bepaald aantal keren wilt herhalen.
for ($i = 1; $i < 10; $i++) {
echo $i;
}
Uitgangen: 123456789
Zie het onderwerp Loops voor gedetailleerde informatie.
foreach
foreach
is een constructie waarmee u eenvoudig reeksen en objecten kunt doorlopen.
$array = [1, 2, 3];
foreach ($array as $value) {
echo $value;
}
Uitgangen: 123
.
Om foreach
loop met een object te gebruiken, moet het Iterator
interface implementeren.
Wanneer u itereert over associatieve arrays:
$array = ['color'=>'red'];
foreach($array as $key => $value){
echo $key . ': ' . $value;
}
Uitgangen: color: red
Zie het onderwerp Loops voor gedetailleerde informatie.
indien anders
elseif
elseif
combineert if
en else
. De instructie if
wordt uitgebreid om een andere instructie uit te voeren in het geval dat niet aan de oorspronkelijke if
uitdrukking wordt voldaan. Maar de alternatieve uitdrukking wordt alleen uitgevoerd als aan de elseif
voorwaardelijke uitdrukking wordt voldaan.
De volgende code geeft aan of "a is groter dan b", "a is gelijk aan b" of "a is kleiner dan b":
if ($a > $b) {
echo "a is bigger than b";
} elseif ($a == $b) {
echo "a is equal to b";
} else {
echo "a is smaller than b";
}
Verschillende andere uitspraken
U kunt meerdere elseif-instructies gebruiken binnen dezelfde if-instructie:
if ($a == 1) {
echo "a is One";
} elseif ($a == 2) {
echo "a is Two";
} elseif ($a == 3) {
echo "a is Three";
} else {
echo "a is not One, not Two nor Three";
}
als
Het if-construct maakt voorwaardelijke uitvoering van codefragmenten mogelijk.
if ($a > $b) {
echo "a is bigger than b";
}
PHP Manual - Besturingsstructuren - Indien
schakelaar
De switch
heeft dezelfde functie als een reeks if
instructies, maar kan het werk in minder regels code uitvoeren. De te testen waarde, zoals gedefinieerd in de switch
, wordt vergeleken voor gelijkheid met de waarden in elk van de case
totdat een overeenkomst wordt gevonden en de code in dat blok wordt uitgevoerd. Als er geen overeenkomende case
wordt gevonden, wordt de code in het default
uitgevoerd, als deze bestaat.
Elk codeblok in een case
of default
moet eindigen met de break
instructie. Hiermee wordt de uitvoering van de switch
gestopt en wordt de code onmiddellijk daarna voortgezet. Als de break
instructie wordt weggelaten, wordt de code van de volgende case
instructie uitgevoerd, zelfs als er geen overeenkomst is . Dit kan onverwachte uitvoering van code veroorzaken als de break
instructie wordt vergeten, maar kan ook handig zijn wanneer meerdere case
instructies dezelfde code moeten delen.
switch ($colour) {
case "red":
echo "the colour is red";
break;
case "green":
case "blue":
echo "the colour is green or blue";
break;
case "yellow":
echo "the colour is yellow";
// note missing break, the next block will also be executed
case "black":
echo "the colour is black";
break;
default:
echo "the colour is something else";
break;
}
Naast het testen van vaste waarden, kan het construct ook worden gedwongen om dynamische instructies te testen door een booleaanse waarde te geven aan de switch
en elke expressie in de case
. Houd er rekening mee dat de eerste overeenkomende waarde wordt gebruikt, dus de volgende code geeft "meer dan 100" weer:
$i = 1048;
switch (true) {
case ($i > 0):
echo "more than 0";
break;
case ($i > 100):
echo "more than 100";
break;
case ($i > 1000):
echo "more than 1000";
break;
}
Zie Verrassingen switch
voor mogelijke problemen met los typen tijdens het gebruik van de switch