PHP
Kontrollstrukturer
Sök…
Alternativ syntax för kontrollstrukturer
PHP tillhandahåller en alternativ syntax för vissa kontrollstrukturer: if
, while
, for
, foreach
och switch
.
I jämförelse med den normala syntax, skillnaden är, att öppnings stag är ersatt av ett kolon ( :
) och stängnings stag ersätts av endif;
i endwhile;
, endfor;
, endforeach;
eller endswitch;
respektive. För enskilda exempel, se ämnet om alternativ syntax för kontrollstrukturer .
if ($a == 42):
echo "The answer to life, the universe and everything is 42.";
endif;
Flera elseif
uttalanden med kort syntax:
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 - Kontrollstrukturer - Alternativ syntax
medan
while
slingan iterates genom ett kodblock så länge ett specificerat villkor är sant.
$i = 1;
while ($i < 10) {
echo $i;
$i++;
}
Utgång: 123456789
För detaljerad information, se Loops ämne .
göra medan
do-while
loopen kör först ett kodblock en gång, i alla fall, sedan iterererar det kodblocket så länge ett angivet tillstånd är sant.
$i = 0;
do {
$i++;
echo $i;
} while ($i < 10);
Output: `12345678910`
För detaljerad information, se Loops ämne .
gå till
goto
operatören tillåter att hoppa till ett annat avsnitt i programmet. Det är tillgängligt sedan PHP 5.3.
Goto-instruktionen är en goto följt av den önskade goto MyLabel;
: goto MyLabel;
.
Målet för hoppet specificeras av en etikett följt av en kolon: MyLabel:
Detta exempel kommer att skriva ut Hello World!
:
<?php
goto MyLabel;
echo 'This text will be skipped, because of the jump.';
MyLabel:
echo 'Hello World!';
?>
deklarera
declare
används för att ställa in ett körningsdirektiv för ett kodblock.
Följande direktiv erkänns:
Ställ exempelvis fästingar till 1:
declare(ticks=1);
För att möjliggöra strikt typ läge, declare
är uttalandet används med strict_types
förklaring:
declare(strict_types=1);
om annat
if
satsen i exemplet ovan tillåter att köra ett kodfragment när villkoret är uppfyllt. När du vill köra ett kodfragment, när villkoret inte är uppfyllt, utökar du if
med ett else
.
if ($a > $b) {
echo "a is greater than b";
} else {
echo "a is NOT greater than b";
}
PHP Manual - Kontrollstrukturer - Annars
Den ternära operatören som en kort syntax för if-else
Den ternära operatören utvärderar något baserat på att ett villkor är sant eller inte. Det är en jämförelseoperatör och används ofta för att uttrycka ett enkelt om annat-tillstånd i en kortare form. Det gör det möjligt att snabbt testa ett tillstånd och ersätter ofta en flerstreckad om uttalande, vilket gör din kod mer kompakt.
Detta är exemplet ovanifrån med ett ternärt uttryck och variabla värden: $a=1; $b=2;
echo ($a > $b) ? "a is greater than b" : "a is NOT greater than b";
Utgångar: a is NOT greater than b
.
inkludera och kräva
fordra
require
liknar att include
, förutom att det kommer att ge ett dödligt E_COMPILE_ERROR
vid fel. När require
misslyckas kommer det att stoppa skriptet. När include
misslyckas kommer det inte att stoppa skriptet och endast avge E_WARNING
.
require 'file.php';
PHP Manual - Kontrollstrukturer - Kräver
inkludera
include
uttalandet inkluderar och utvärderar en fil.
./variables.php
$a = 'Hello World!';
. / Main.php`
include 'variables.php';
echo $a;
// Output: `Hello World!`
Var försiktig med den här metoden, eftersom den betraktas som en kodlukt , eftersom den inkluderade filen förändrar mängden och innehållet i de definierade variablerna i det givna omfånget.
Du kan också include
fil som returnerar ett värde. Detta är extremt användbart för att hantera konfigurationsmatriser:
configuration.php
<?php
return [
'dbname' => 'my db',
'user' => 'admin',
'pass' => 'password',
];
main.php
<?php
$config = include 'configuration.php';
Detta tillvägagångssätt förhindrar att den inkluderade filen förorenar ditt nuvarande omfattning med ändrade eller tillagda variabler.
PHP Manual - Kontrollstrukturer - Inkludera
inkludera och kräva kan också användas för att tilldela värden till en variabel när det returneras något efter fil.
Exempel:
include1.php-fil:
<?php
$a = "This is to be returned";
return $a;
?>
index.php-fil:
$value = include 'include1.php';
// Here, $value = "This is to be returned"
lämna tillbaka
return
returnerar programstyrningen till samtalsfunktionen.
När return
kallas inifrån en funktion avslutas exekveringen av den aktuella funktionen.
function returnEndsFunctions()
{
echo 'This is executed';
return;
echo 'This is not executed.';
}
När du kör returnEndsFunctions();
du får utdata This is executed
;
När return
kallas inifrån en funktion med och argument, kommer exekveringen av den aktuella funktionen att avslutas och värdet på argumentet kommer att returneras till den samtalande funktionen.
för
for
slingor används vanligtvis när du har ett kodstycke som du vill upprepa ett visst antal gånger.
for ($i = 1; $i < 10; $i++) {
echo $i;
}
Utgångar: 123456789
För detaljerad information, se Loops ämne .
för varje
foreach
är en konstruktion som gör att du enkelt kan iterera över matriser och objekt.
$array = [1, 2, 3];
foreach ($array as $value) {
echo $value;
}
Utgångar: 123
.
För att använda foreach
med ett objekt måste den implementera Iterator
gränssnittet.
När du itererar över associerande matriser:
$array = ['color'=>'red'];
foreach($array as $key => $value){
echo $key . ': ' . $value;
}
Utgångar: color: red
För detaljerad information, se Loops ämne .
om annars annars
elseif
elseif
kombinerar if
och else
. if
uttalandet utvidgas till att utföra ett annat uttalande om originalet if
uttrycket inte uppfylls. Men är det alternativa uttrycket endast utföras när elseif
villkorliga uttrycket är uppfyllt.
Följande kod visar antingen "a är större än b", "a är lika med b" eller "a är mindre än 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";
}
Flera annat uttalanden
Du kan använda flera annarsif-uttalanden inom samma om uttalande:
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";
}
om
If-konstruktionen möjliggör villkorlig exekvering av kodfragment.
if ($a > $b) {
echo "a is bigger than b";
}
PHP Manual - Kontrollstrukturer - Om
växla
switch
utför samma funktion som en serie if
uttalanden, men kan göra jobbet i färre kodrader. Det värde som skall testas, såsom definieras i switch
uttalande, jämförs för könen med värdena i vart och ett av case
uttalanden tills en matchning hittas och koden i det blocket exekveras. Om ingen matchande case
uttalande hittas koden i default
är blocket exekveras om den finns.
Varje block av kod i ett case
eller default
uttalande bör upphöra med break
uttalande. Detta stoppar exekveringen av switch
och fortsätter kodkörningen omedelbart därefter. Om break
uttalande utelämnas nästa case
är uttalande kod exekveras, även om det inte finns någon match. Detta kan orsaka exekvering oväntade kod om break
uttalande glöms bort, men kan också vara användbart där flera case
uttalanden behöver dela samma kod.
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;
}
Förutom att testa fasta värden, kan konstruktionen också tvingas att testa dynamiska uttalanden genom att tillhandahålla ett booleskt värde till switch
uttalandet och varje uttryck till case
uttalandet. Tänk på att det första matchningsvärdet används, så följande kod kommer att mata ut "mer än 100":
$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;
}
Information om eventuella problem med lös typ när du använder switch
finns i Switch Surprise