PHP Control Structures: Pokud jinak, Switch Case

โšก Chytrรฉ shrnutรญ

ล˜รญdicรญ struktury a smyฤky urฤujรญ cestu, kterou se PHP program vydรก, a efektivnฤ› opakujรญ bloky kรณdu. Tento nรกvod vysvฤ›tluje rozhodovacรญ struktury if-else a switch a potรฉ se zabรฝvรก smyฤkami for, while, do-while a foreach, kterรฉ konkurenti v tomto tรฉmatu oฤekรกvajรญ.

  • ๐Ÿ”€ ล˜รญdicรญ tok: ล˜รญdicรญ struktura vybรญrรก, kterรฝ kรณd se spustรญ na zรกkladฤ› podmรญnky, ฤรญmลพ pล™emฤ›ลˆuje pล™รญmou sekvenci na logiku ล™รญzenou rozhodovรกnรญm.
  • ๐Ÿ”ค Pokud-jinak: Struktura if-else spustรญ jeden blok, kdyลพ je podmรญnka pravdivรก, a zรกloลพnรญ blok, kdyลพ je nepravdivรก.
  • ๐Ÿงฎ Pouzdro spรญnaฤe: Funkce switch porovnรกvรก jednu hodnotu s nฤ›kolika popisky pล™รญpadลฏ a spustรญ odpovรญdajรญcรญ blok, nebo vรฝchozรญ hodnotu, pokud se ลพรกdnรก neshoduje.
  • ๐Ÿ” Pล™ehled smyฤek: Smyฤky opakujรญ blok kรณdu, coลพ vรกm uลกetล™รญ psanรญ stejnรฝch pล™รญkazลฏ mnohokrรกt.
  • ๐Ÿ”ข Poฤรญtรกnรญ smyฤek: for a while opakovat, dokud je podmรญnka splnฤ›na, ideรกlnรญ, kdyลพ vรญte nebo track kolik iteracรญ je potล™eba.
  • ???? Smyฤka Foreach: Funkce foreach prochรกzรญ kaลพdรฝm prvkem pole, aniลพ by sama spravovala ฤรญtaฤ indexลฏ.
  • ๐Ÿค– AI Assist: Nรกstroje umฤ›lรฉ inteligence dokรกลพรญ refaktorovat dlouhรฉ ล™etฤ›zce if-else na pล™รญkazy switch nebo match a pomรกhajรญ opravit nekoneฤnรฉ smyฤky.

ล˜รญdicรญ struktury a smyฤky v PHP

Co je to kontrolnรญ struktura?

Code Provedenรญ lze rozdฤ›lit do kategoriรญ, jak je uvedeno nรญลพe.

  • Sekvenฤnรญ โ€“ v tomto pล™รญpadฤ› se veลกkerรฝ kรณd spustรญ v poล™adรญ, v jakรฉm byl napsรกn.
  • Rozhodnutรญ โ€“ toto zahrnuje vรฝbฤ›r z nฤ›kolika moลพnostรญ. Provedenรฝ kรณd zรกvisรญ na hodnotฤ› podmรญnky.

ล˜รญdicรญ struktura je blok kรณdu, kterรฝ rozhoduje o cestฤ› provรกdฤ›nรญ programu v zรกvislosti na hodnotฤ› nastavenรฉ podmรญnky.

Pojฤme se nynรญ podรญvat na nฤ›kterรฉ z kontrolnรญch struktur, kterรฉ PHP podporuje.

PHP IF Jinak

Pokudโ€ฆ pakโ€ฆ je to jinak nejjednoduลกลกรญ struktura ovlรกdรกnรญVyhodnocuje podmรญnky pomocรญ booleovskรฉ logiky.

Kdy pouลพรญt ifโ€ฆ thenโ€ฆ else

  • Mรกte blok kรณdu, kterรฝ by mฤ›l bรฝt proveden, pouze pokud je splnฤ›na urฤitรก podmรญnka
  • Mรกte dvฤ› moลพnosti a musรญte si vybrat jednu.
  • Ifโ€ฆ thenโ€ฆ else ifโ€ฆ se pouลพรญvรก, kdyลพ musรญte vybrat vรญce neลพ dvฤ› moลพnosti a musรญte vybrat jednu nebo vรญce

syntax. Syntaxe pro ifโ€ฆ thenโ€ฆ else je:

<?php
if (condition is true) {
    block one
} else {
    block two
}
?>

TADY,

  • "pokud (podmรญnka je pravdivรก)โ€žje ล™รญdicรญ struktura
  • "blok jedenโ€ je kรณd, kterรฝ se mรก provรฉst, pokud je podmรญnka pravdivรก
  • jinรฝ je zรกloลพnรญ, pokud je podmรญnka nepravdivรก
  • "blok dvaโ€ je blok kรณdu, kterรฝ se provede, pokud je podmรญnka nepravdivรก

Jak to funguje. Nรญลพe uvedenรฝ vรฝvojovรฝ diagram ilustruje, jak funguje ล™รญdicรญ struktura ifโ€ฆthenโ€ฆelse.

PHP IF Jinak

Pojฤme se na to podรญvat v praxi. Nรญลพe uvedenรฝ kรณd pouลพรญvรก k urฤenรญ vฤ›tลกรญ hodnoty mezi dvฤ›ma ฤรญsly โ€žjestliโ€ฆ pakโ€ฆ jinakโ€œ.

<?php

$first_number = 7;

$second_number = 21;

if ($first_number > $second_number){

echo "$first_number is greater than $second_number";

}else{

echo "$second_number is greater than $first_number";

}

?>

Vรฝstup:

21 is greater than 7

Pouzdro na pล™epรญnaฤ PHP

Spรญnaฤโ€ฆ pouzdro je podobnรก pokudโ€ฆ pakโ€ฆ jinak ล™รญdรญcรญ struktura.

Jen to provede jeden blok kรณdu v zรกvislosti na hodnota stavu.

Pokud nenรญ splnฤ›na ลพรกdnรก podmรญnka, provede se vรฝchozรญ blok kรณdu.

Mรก nรกsledujรญcรญ zรกkladnรญ syntaxi.

<?php
switch(condition){

case value:

// block of code to be executed

break;

case value2:

// block of code to be executed

break;

default:

// default block code

break;

}
?>

TADY,

  • "pล™epรญnaฤ(โ€ฆ){โ€ฆ}" je kรณd bloku ล™รญdicรญ struktury
  • โ€žhodnota pล™รญpadu: pล™รญpadโ€ฆโ€œ jsou bloky kรณdu, kterรฉ majรญ bรฝt provedeny v zรกvislosti na hodnotฤ› podmรญnky
  • "vรฝchozรญ:" je blok kรณdu, kterรฝ se provede, kdyลพ ลพรกdnรก hodnota neodpovรญdรก podmรญnce

Jak to funguje

Nรญลพe uvedenรฝ vรฝvojovรฝ diagram ilustruje, jak funguje struktura ovlรกdรกnรญ pล™epรญnaฤe.

Pouzdro na pล™epรญnaฤ PHP

Praktickรฝ pล™รญklad

Nรญลพe uvedenรฝ kรณd pouลพรญvรก strukturu ovlรกdรกnรญ pล™epรญnaฤลฏ k zobrazenรญ zprรกvy v zรกvislosti na dni v tรฝdnu.

<?php

$today = "wednesday";

switch($today){

case "sunday":

echo "pray for us sinners.";

break;

case "wednesday":

echo "ladies night, take her out for dinner";

break;

case "saturday":

echo "take care as you go out tonight.";

break;

default:

echo "have a nice day at work";

break;

}

?>

Vรฝstup:

ladies night, take her out for dinner

PHP smyฤky

Smyฤky jsou ล™รญdicรญ struktury, kterรฉ opakujรญ blok kรณdu, dokud je podmรญnka splnฤ›na. Uลกetล™รญ vรกm psanรญ stejnรฉho pล™รญkazu mnohokrรกt. PHP podporuje ฤtyล™i typy smyฤek: for, while, do-while a foreach. Podrobnฤ›jลกรญ nรกvod naleznete ve vyhrazenรฉm dokumentu. Vรฝukovรฝ program pro PHP cyklus.

PHP pro smyฤku

Smyฤka for se pouลพรญvรก, kdyลพ pล™edem vรญte, kolikrรกt se mรก kรณd spustit. Kombinuje ฤรญtaฤ, podmรญnku a inkrement na jednom ล™รกdku.

<?php
for ($i = 0; $i < 5; $i++) {
    echo $i;
}
?>

Vรฝstup:

01234

PHP cyklus While

Smyฤka while opakuje blok tak dlouho, dokud je jeho podmรญnka pravdivรก. Podmรญnka se kontroluje pล™ed kaลพdou iteracรญ, takลพe tฤ›lo smyฤky se mลฏลพe spustit nulakrรกt.

<?php
$i = 0;
while ($i < 5) {
    echo $i;
    $i++;
}
?>

Vรฝstup:

01234

PHP cyklus Do-While

Smyฤka typu do-while je podobnรก smyฤce while, ale kontroluje podmรญnku aลพ po tฤ›le bloku. To zaruฤuje, ลพe se blok spustรญ alespoลˆ jednou.

<?php
$i = 0;
do {
    echo $i;
    $i++;
} while ($i < 5);
?>

Vรฝstup:

01234

PHP smyฤka Foreach

Smyฤka foreach je urฤena pro pole. Prochรกzรญ kaลพdรฝm prvkem, aniลพ byste museli spravovat ฤรญtaฤ indexลฏ.

<?php
$colors = array("red", "green", "blue");
foreach ($colors as $color) {
    echo $color . " ";
}
?>

Vรฝstup:

red green blue

Nejฤastฤ›jลกรญ dotazy

Pล™รญkaz switch pouลพijte pล™i porovnรกvรกnรญ jednรฉ promฤ›nnรฉ s mnoha pevnรฝmi hodnotami, protoลพe se snรกze ฤte neลพ dlouhรฝ ล™etฤ›zec if-else. Pล™รญkaz if-else pouลพijte pro rozsahy, sloลพitรฉ podmรญnky nebo porovnรกnรญ zahrnujรญcรญ rลฏznรฉ promฤ›nnรฉ.

Pล™รญkaz break smyฤku zcela zastavรญ a pล™ejde na kรณd za nรญ. Pล™รญkaz continue pล™eskoฤรญ zbytek aktuรกlnรญ iterace a pล™eskoฤรญ na dalลกรญ, aniลพ by smyฤku zcela ukonฤil.

match je modernรญ alternativa k pล™รญkazu switch, kterรฝ byl pล™edstaven v PHP 8. Vracรญ hodnotu, pouลพรญvรก striktnรญ porovnรกvรกnรญ, nepotล™ebuje ลพรกdnรฉ pล™รญkazy break a vyvolรก chybu, pokud se neshoduje ลพรกdnรก shoda s pล™รญkazem arm, coลพ jej ฤinรญ bezpeฤnฤ›jลกรญm a struฤnฤ›jลกรญm.

Ano. Umฤ›lรก inteligence dokรกลพe pล™epsat dlouhรฝ ล™etฤ›zec if-else jako ekvivalentnรญ switch nebo vรฝraz pro porovnรกvรกnรญ v PHP 8, keeping logika je identickรก, ale kรณd je kratลกรญ a ฤitelnฤ›jลกรญ. Vรฝsledek si potรฉ otestujte.

Ano. Umฤ›lรก inteligence dokรกลพe zkontrolovat stav a poฤรญtadlo vaลกรญ smyฤky, najรญt chybฤ›jรญcรญ pล™รญrลฏstek nebo podmรญnku, kterรก se nikdy nestane nepravdivou, a navrhnout opravu, aby smyฤka skonฤila podle oฤekรกvรกnรญ.

Shrลˆte tento pล™รญspฤ›vek takto: