PHP
Struktury kontrolne
Szukaj…
Alternatywna składnia dla struktur kontrolnych
PHP zapewnia alternatywną składnię dla niektórych struktur kontrolnych: if
, while
, for
, foreach
i switch
.
W porównaniu do normalnego składni różnicą jest to, że klamra otwór jest zastąpiony przez jelita ( :
) i klamra zamykająca otrzymuje endif;
, w endwhile;
, endfor;
, endforeach;
lub endswitch;
odpowiednio. Poszczególne przykłady znajdują się w temacie dotyczącym alternatywnej składni struktur kontrolnych .
if ($a == 42):
echo "The answer to life, the universe and everything is 42.";
endif;
Wiele instrukcji elseif
przy użyciu krótkiej składni:
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 - Struktury kontrolne - Alternatywna składnia
podczas
while
pętla iteracje przez blok kodu, tak długo, jak określony warunek jest spełniony.
$i = 1;
while ($i < 10) {
echo $i;
$i++;
}
Wyjście: 123456789
Aby uzyskać szczegółowe informacje, zobacz temat Pętle .
robić
pętla do-while
while wykonuje najpierw blok kodu raz, w każdym przypadku, a następnie iteruje ten blok kodu, o ile spełniony jest określony warunek.
$i = 0;
do {
$i++;
echo $i;
} while ($i < 10);
Output: `12345678910`
Aby uzyskać szczegółowe informacje, zobacz temat Pętle .
iść do
Operator goto
pozwala na przejście do innej sekcji programu. Jest dostępny od PHP 5.3.
Instrukcja goto to goto, po której następuje pożądana etykieta docelowa: goto MyLabel;
.
Cel skoku jest określony etykietą, a następnie dwukropkiem: MyLabel:
Ten przykład wydrukuje Hello World!
:
<?php
goto MyLabel;
echo 'This text will be skipped, because of the jump.';
MyLabel:
echo 'Hello World!';
?>
ogłosić
declare
służy do ustawienia dyrektywy wykonawczej dla bloku kodu.
Uznawane są następujące dyrektywy:
Na przykład ustaw tiki na 1:
declare(ticks=1);
Aby włączyć tryb ścisłego typu, declare
deklaracji jest używana z deklaracją strict_types
:
declare(strict_types=1);
Jeśli inaczej
Instrukcja if
w powyższym przykładzie pozwala na wykonanie fragmentu kodu, gdy warunek jest spełniony. Gdy chcesz wykonać fragment kodu, gdy warunek nie jest spełniony, rozszerz if
else
.
if ($a > $b) {
echo "a is greater than b";
} else {
echo "a is NOT greater than b";
}
PHP Manual - Struktury kontrolne - Pozostałe
Operator trójskładnikowy jako skrócona składnia dla if-else
Operator trójskładnikowy ocenia coś w oparciu o spełnienie lub nie spełnienie warunku. Jest to operator porównania i często używany jest do wyrażenia prostego warunku „if-else” w krótszej formie. Pozwala szybko przetestować warunek i często zastępuje wieloliniową instrukcję if, dzięki czemu kod jest bardziej zwarty.
Oto przykład z góry, w którym użyto wyrażenia potrójnego i wartości zmiennych: $a=1; $b=2;
echo ($a > $b) ? "a is greater than b" : "a is NOT greater than b";
Wyjścia: a is NOT greater than b
.
obejmują i wymagają
wymagać
require
jest podobne do include
, z tą różnicą, że w przypadku niepowodzenia E_COMPILE_ERROR
błąd krytyczny na poziomie E_COMPILE_ERROR
. Gdy require
nie powiedzie się, skrypt zostanie zatrzymany. Gdy include
nie powiedzie się, nie zatrzyma skryptu i wyemituje tylko E_WARNING
.
require 'file.php';
PHP Manual - Struktury kontrolne - Wymagaj
zawierać
Instrukcja include
zawiera i ocenia plik.
./variables.php
$a = 'Hello World!';
. / main.php`
include 'variables.php';
echo $a;
// Output: `Hello World!`
Zachowaj ostrożność przy takim podejściu, ponieważ jest to zapach kodu , ponieważ dołączony plik zmienia ilość i zawartość zdefiniowanych zmiennych w danym zakresie.
Możesz także include
plik, który zwraca wartość. Jest to niezwykle przydatne do obsługi tablic konfiguracyjnych:
Configuration.php
<?php
return [
'dbname' => 'my db',
'user' => 'admin',
'pass' => 'password',
];
main.php
<?php
$config = include 'configuration.php';
Takie podejście zapobiegnie zanieczyszczeniu dołączonego pliku przez bieżący zakres zmienionymi lub dodanymi zmiennymi.
PHP Manual - Struktury kontrolne - Uwzględnij
Uwzględnij i wymagaj może również służyć do przypisywania wartości zmiennej, gdy zwracane są przez plik.
Przykład:
plik include1.php:
<?php
$a = "This is to be returned";
return $a;
?>
plik index.php:
$value = include 'include1.php';
// Here, $value = "This is to be returned"
powrót
Instrukcja return
zwraca kontrolę programu do funkcji wywołującej.
Po wywołaniu return
z funkcji wykonywanie bieżącej funkcji zakończy się.
function returnEndsFunctions()
{
echo 'This is executed';
return;
echo 'This is not executed.';
}
Po uruchomieniu returnEndsFunctions();
dostaniesz wynik Zostanie This is executed
;
Kiedy return
jest wywoływane z funkcji z argumentem i, wykonywanie bieżącej funkcji zakończy się, a wartość argumentu zostanie zwrócona do funkcji wywołującej.
dla
for
pętle są zazwyczaj stosowane, gdy masz kawałek kodu, który chcesz powtórzyć daną liczbę razy.
for ($i = 1; $i < 10; $i++) {
echo $i;
}
Wyjścia: 123456789
Aby uzyskać szczegółowe informacje, zobacz temat Pętle .
dla każdego
foreach
to konstrukcja, która umożliwia łatwe iterowanie tablic i obiektów.
$array = [1, 2, 3];
foreach ($array as $value) {
echo $value;
}
Wyjścia: 123
.
Aby użyć pętli foreach
z obiektem, należy zaimplementować interfejs Iterator
.
Podczas iteracji po tablicach asocjacyjnych:
$array = ['color'=>'red'];
foreach($array as $key => $value){
echo $key . ': ' . $value;
}
Wyjścia: color: red
Aby uzyskać szczegółowe informacje, zobacz temat Pętle .
jeśli inaczej
elseif
elseif
łączy if
i else
. if
oświadczenie jest przedłużony do wykonywania innego oświadczenia w przypadku oryginału if
wyrażenie nie jest spełniony. Ale wyrażenie alternatywne jest wykonywane tylko wtedy, gdy spełnione jest wyrażenie warunkowe elseif
.
Poniższy kod wyświetla albo „a jest większy niż b”, „a jest równy b” lub „a jest mniejszy niż 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";
}
Kilka innych oświadczeń
Można użyć wielu instrukcji elseif w ramach tej samej instrukcji if:
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";
}
gdyby
Konstrukcja if pozwala na warunkowe wykonywanie fragmentów kodu.
if ($a > $b) {
echo "a is bigger than b";
}
PHP Manual - Struktury kontrolne - If
przełącznik
Struktura switch
pełni tę samą funkcję, co seria instrukcji if
, ale może wykonać zadanie w mniejszej liczbie wierszy kodu. Testowana wartość, zgodnie z definicją w instrukcji switch
, jest porównywana pod kątem równości z wartościami w każdej z instrukcji case
, aż do znalezienia dopasowania i wykonania kodu w tym bloku. Jeśli nie znaleziono pasującej instrukcji case
, kod w default
bloku jest wykonywany, jeśli istnieje.
Każdy blok kodu w instrukcji case
lub default
powinien kończyć się instrukcją break
. To zatrzymuje wykonywanie struktury switch
i natychmiast wykonuje kod. Jeśli instrukcja break
zostanie pominięta, kod instrukcji następnego case
jest wykonywany, nawet jeśli nie ma zgodności . Może to spowodować nieoczekiwane wykonanie kodu, jeśli instrukcja break
zostanie zapomniana, ale może być również przydatna, case
wiele instrukcji case
musi współużytkować ten sam 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;
}
Oprócz testowania stałych wartości konstrukcję można również zmusić do przetestowania instrukcji dynamicznych, podając wartość logiczną do instrukcji switch
i dowolne wyrażenie do instrukcji case
. Pamiętaj, że używana jest pierwsza pasująca wartość, więc następujący kod wyświetli „więcej niż 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;
}
Aby zapoznać się z możliwymi problemami z luźnym pisaniem podczas korzystania z konstrukcji switch
, zobacz Przełączanie niespodzianek