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



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow