PHP
Kontrollstrukturen
Suche…
Alternative Syntax für Kontrollstrukturen
PHP bietet eine alternative Syntax für einige Kontrollstrukturen: if
, while
, for
, foreach
und switch
.
Wenn auf die normale Syntax verglichen, der Unterschied ist, dass die Öffnungsstrebe durch einen Doppelpunkt ersetzt wird ( :
) und die schließende Klammer ersetzt durch endif;
endwhile;
endfor;
endforeach;
oder endswitch;
, beziehungsweise. Einzelne Beispiele finden Sie im Thema zu alternativer Syntax für Kontrollstrukturen .
if ($a == 42):
echo "The answer to life, the universe and everything is 42.";
endif;
Mehrere elseif
Anweisungen mit kurzer 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 - Kontrollstrukturen - Alternative Syntax
während
while
Schleife durchläuft einen Codeblock, solange eine angegebene Bedingung erfüllt ist.
$i = 1;
while ($i < 10) {
echo $i;
$i++;
}
Ausgabe: 123456789
Ausführliche Informationen finden Sie im Thema Schleifen .
mache
do-while
Schleife führt in jedem Fall zuerst einmal einen Codeblock aus und durchläuft dann diesen Codeblock, solange eine angegebene Bedingung erfüllt ist.
$i = 0;
do {
$i++;
echo $i;
} while ($i < 10);
Output: `12345678910`
Ausführliche Informationen finden Sie im Thema Schleifen .
gehe zu
Mit dem Operator goto
können Sie zu einem anderen Abschnitt des Programms springen. Es ist seit PHP 5.3 verfügbar.
Der goto-Befehl ist ein goto, gefolgt vom gewünschten goto MyLabel;
: goto MyLabel;
.
Das Ziel des Sprungs wird durch eine Beschriftung gefolgt von einem Doppelpunkt angegeben: MyLabel:
Dieses Beispiel druckt Hello World!
:
<?php
goto MyLabel;
echo 'This text will be skipped, because of the jump.';
MyLabel:
echo 'Hello World!';
?>
erklären
declare
wird eine Ausführungsanweisung für einen Codeblock festgelegt.
Folgende Richtlinien werden anerkannt:
Setzen Sie zum Beispiel Ticks auf 1:
declare(ticks=1);
Um den strikten strict_types
zu aktivieren, wird die declare
mit der strict_types
Deklaration verwendet:
declare(strict_types=1);
ansonsten
Die if
-Anweisung im obigen Beispiel ermöglicht die Ausführung eines Codefragments, wenn die Bedingung erfüllt ist. Wenn Sie ein Codefragment ausführen möchten und die Bedingung nicht erfüllt ist, erweitern Sie das if
um ein else
.
if ($a > $b) {
echo "a is greater than b";
} else {
echo "a is NOT greater than b";
}
PHP Manual - Kontrollstrukturen - Sonst
Der ternäre Operator als Abkürzungssyntax für if-else
Der ternäre Operator bewertet etwas basierend auf einer Bedingung, die wahr ist oder nicht. Es ist ein Vergleichsoperator und wird häufig verwendet, um eine einfache if-else-Bedingung in einer kürzeren Form auszudrücken. Es ermöglicht das schnelle Testen einer Bedingung und ersetzt häufig eine mehrzeilige if-Anweisung, wodurch der Code kompakter wird.
Dies ist das Beispiel von oben, das einen ternären Ausdruck und Variablenwerte verwendet: $a=1; $b=2;
echo ($a > $b) ? "a is greater than b" : "a is NOT greater than b";
Ausgaben: a is NOT greater than b
.
einschließen & erfordern
benötigen
require
ähnlich include
, mit der Ausnahme , dass es einen fatalen produziert E_COMPILE_ERROR
Level - Fehler bei einem Fehler. Wenn die require
fehlschlägt, wird das Skript angehalten. Wenn das include
fehlschlägt, wird das Skript nicht E_WARNING
und nur E_WARNING
.
require 'file.php';
PHP Manual - Kontrollstrukturen - erforderlich
umfassen
Die include
Anweisung schließt eine Datei ein und wertet sie aus.
./variablen.php
$a = 'Hello World!';
. / main.php`
include 'variables.php';
echo $a;
// Output: `Hello World!`
Seien Sie vorsichtig mit diesem Ansatz, da er als Codegeruch angesehen wird , da die enthaltene Datei die Menge und den Inhalt der definierten Variablen im angegebenen Bereich ändert.
Sie können auch include
Datei include
, die einen Wert zurückgibt. Dies ist äußerst nützlich für die Handhabung von Konfigurations-Arrays:
configuration.php
<?php
return [
'dbname' => 'my db',
'user' => 'admin',
'pass' => 'password',
];
main.php
<?php
$config = include 'configuration.php';
Dieser Ansatz verhindert, dass die eingeschlossene Datei Ihren aktuellen Bereich mit geänderten oder hinzugefügten Variablen verschmutzt.
PHP Manual - Kontrollstrukturen - Include
include & requir kann auch verwendet werden, um einer Variablen Werte zuzuweisen, wenn etwas von Datei zurückgegeben wird.
Beispiel:
include1.php-Datei:
<?php
$a = "This is to be returned";
return $a;
?>
Datei index.php:
$value = include 'include1.php';
// Here, $value = "This is to be returned"
Rückkehr
Die return
Anweisung gibt die Programmsteuerung an die aufrufende Funktion zurück.
Wenn return
innerhalb einer Funktion aufgerufen wird, wird die Ausführung der aktuellen Funktion beendet.
function returnEndsFunctions()
{
echo 'This is executed';
return;
echo 'This is not executed.';
}
Wenn Sie returnEndsFunctions();
Sie erhalten die Ausgabe. This is executed
.
Wenn return
aus einer Funktion mit einem Argument aufgerufen wird, endet die Ausführung der aktuellen Funktion und der Wert des Arguments wird an die aufrufende Funktion zurückgegeben.
zum
for
Schleifen werden normalerweise verwendet, wenn Sie einen Code haben, den Sie eine bestimmte Anzahl von Wiederholungen wiederholen möchten.
for ($i = 1; $i < 10; $i++) {
echo $i;
}
Ausgaben: 123456789
Ausführliche Informationen finden Sie im Thema Schleifen .
für jeden
foreach
ist ein Konstrukt, mit dem Sie Arrays und Objekte leicht durchlaufen können.
$array = [1, 2, 3];
foreach ($array as $value) {
echo $value;
}
Ausgänge: 123
.
Um die foreach
Schleife mit einem Objekt verwenden zu können, muss die Iterator
Schnittstelle implementiert werden.
Wenn Sie assoziative Arrays durchlaufen:
$array = ['color'=>'red'];
foreach($array as $key => $value){
echo $key . ': ' . $value;
}
Ausgänge: color: red
Ausführliche Informationen finden Sie im Thema Schleifen .
wenn sonst noch
elseif
elseif
kombiniert if
und else
. Die if
Anweisung wird erweitert, um eine andere Anweisung auszuführen, falls der ursprüngliche if
Ausdruck nicht erfüllt ist. Der alternative Ausdruck wird jedoch nur ausgeführt, wenn der elseif
Bedingungsausdruck erfüllt ist.
Der folgende Code zeigt entweder "a ist größer als b", "a ist b" oder "a ist kleiner als 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";
}
Mehrere elseif-Anweisungen
Sie können mehrere elseif-Anweisungen innerhalb derselben if-Anweisung verwenden:
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";
}
ob
Das if-Konstrukt ermöglicht die bedingte Ausführung von Codefragmenten.
if ($a > $b) {
echo "a is bigger than b";
}
PHP Manual - Kontrollstrukturen - Wenn
Schalter
Die switch
Struktur hat dieselbe Funktion wie eine Reihe von if
Anweisungen, kann jedoch die Aufgabe in weniger Codezeilen erledigen. Der zu testende Wert, wie in der switch
Anweisung definiert, wird auf Gleichheit mit den Werten in jeder der case
Anweisungen verglichen, bis eine Übereinstimmung gefunden wird und der Code in diesem Block ausgeführt wird. Wenn keine übereinstimmende case
Anweisung gefunden wird, wird der Code im default
ausgeführt, sofern er existiert.
Jeder Codeblock in einer case
oder default
Anweisung sollte mit der break
Anweisung enden. Dies stoppt die Ausführung der switch
Struktur und setzt die Codeausführung unmittelbar danach fort. Wenn die break
Anweisung nicht angegeben wird, wird der Code der nächsten case
Anweisung ausgeführt, auch wenn keine Übereinstimmung vorliegt. Dies kann zu einer unerwarteten Codeausführung führen, wenn die break
Anweisung vergessen wird. Es kann jedoch auch nützlich sein, wenn mehrere case
Anweisungen denselben Code verwenden müssen.
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;
}
Zusätzlich zum Testen fester Werte kann das Konstrukt auch zum Testen dynamischer Anweisungen gezwungen werden, indem der switch
Anweisung ein boolescher Wert und der case
Anweisung ein beliebiger Ausdruck bereitgestellt case
. Denken Sie daran, dass der erste übereinstimmende Wert verwendet wird, so dass der folgende Code "mehr als 100" ausgibt:
$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;
}
Informationen zu möglichen Problemen mit losem Tippen während der Verwendung des switch
Konstrukts finden Sie unter Switch-Überraschungen