środa,
Instrukcja elseif
W przypadku potrzeby warunkowego wykonania kodu przewidującego możliwych wiele wariantów doskonale może sprawdzić się instrukcja elseif. Słowo kluczowe elseif należy rozumieć jako „w przeciwnym wypadku, jeśli...”. Po wystąpieniu pierwszego warunku zwracającego prawdę pozostałe warunki są ignorowane.
<?php
$plec = 'M';
if($plec == 'M') {
echo 'mężczyzna';
} elseif($plec == 'K') {
echo 'kobieta';
} else {
echo 'błędne dane';
}
// wyświetlony napis: mężczyzna
?>
W prezentowanym przypadku stosowanie słowa kluczowego elseif zamiennie z wyrażeniem „else if” nie zmienia efektu działania skryptu, jednak różni się sposobem wykonania. Aby przedstawić różnicę, w komentarzu zaprezentowano inaczej sformatowany kod, zagnieżdżona konstrukcja if-else traktowana jest jako jedna instrukcja, nawias klamrowy otworzony po pierwszym else jest zbędny i ma tylko poprawić czytelność. Choć nie wpływa to zbytnio na wydajność, lepiej jest stosować elseif. Stwierdzenie to jest zgodne z rekomendacjami zawartymi w PHP Standard Recommendation (PSR).
<?php
$plec = 'M';
if($plec == 'M') {
echo 'mężczyzna';
} else if($plec == 'K') {
echo 'kobieta';
} else {
echo 'błędne dane';
}
/*
if($plec == 'M') {
echo 'mężczyzna';
} else {
if($plec == 'K') {
echo 'kobieta';
} else {
echo 'błędne dane';
}
}
*/
?>
Podobnie jak w przypadku if oraz if-else, jeśli warunkowo ma być wykonana tylko jedna instrukcja, nawiasy klamrowe są zbędne.
<?php
$plec = 'M';
if($plec == 'M') echo 'mężczyzna';
elseif($plec == 'K') echo 'kobieta';
else echo 'błędne dane';
?>
W kolejnym przykładzie założono, że dane będą prawidłowe. Pozwoliło to pokazać, że zarówno else, jak i elseif są opcjonalne. W przypadku prezentowanego problemu lepsze jest drugie rozwiązanie, ponieważ nie występuje w nim drugi warunek.
<?php
$plec = 'M';
// poprawnie składniowo
if($plec == 'M') {
echo 'mężczyzna';
} elseif($plec == 'K') {
echo 'kobieta';
}
// lepszy sposób
if($plec == 'M') {
echo 'mężczyzna';
} else {
echo 'kobieta';
}
?>
W jednej konstrukcji warunkowej można zamieścić wiele instrukcji elseif.
<?php
$x = 'ti';
if($x == 'tr') {
echo 'technik reklamy';
} elseif($x == 'tm') {
echo 'technik mechanik';
} elseif($x == 'ti') {
echo 'technik informatyk';
} elseif($x == 'tps') {
echo 'technik pojazdów samochodowych';
} elseif($x == 'tpm') {
echo 'technik przetwórstwa mleczarskiego';
}
?>