$score = 50;if ($score >= 40){echo'A';} // классика// если действие только одно, допустимо не использовать фигурные скобки. Но зачем?if ($score >= 40)echo'A';// elseif ($score >= 40){echo'A';} else {echo'Если условие не выполняется';}//elseifif ($score >= 40){echo'A';if($score == 41){echo'И вложенные условия допустимы'; }} elseif ($score >= 30){echo'Доп. условий может быть сколько угодно';} else {echo'Если ни одно из условий не выполняется';}// для работы с html<body><?php $score = 95; ?><?php if($score >= 90 ): ?><p>Some text</p><?php elseif($score >= 80): ?><p>Some text</p><?php else: ?><p>Some text</p><?php endif ?></body>
While
$i = 0;while ($i <= 15){ //сначала проверка выражения а потом выполнениеecho$i++;}// бесконечный циклwhile(true){if($i >= 15){break; // может быть break 2; или больше. // Цифра отвечает за кол-во вложенных (родительских) циклов которые будут завершены }echo$i++;}// прогулки по итерациямwhile($i <= 15){if($i % 2 === 0){$i++;continue; // переход к следующей итерации и пропуск всего остального// может быть continue 3; и пропустит 3 итерации }echo$i++;}// альтернативный вариант записиwhile($condition): ...endwhile;
do-while
do { // будет выполнено хотя бы раз в любом случаеecho$i++; } while($i <= 15); // проверка только после выполнения
for
for( $i = 0; $i < 15; $i++){echo$i;}for( $i = 0; print$i, $i < 15; $i++){// вполне допустимо, сам цикл учитвыает последние условие в разделе (в цикле их 3)}//можно использовать для перебора строк или массивов$text = 'Hello World!';for($i =0; $i < strlen($text); $i++;){echo$text[$i];}$text = ['a','b','c'];for($i =0; $i < count($text); $i++;){echo$text[$i];}// стоит учитывать что условие в цикле проверяется каждый раз// и если там есть функция count() то расчеты будут повторяться// лучше избегать подобного, к примеру$text = ['a','b','c'];$lenght = count($text);for($i =0; $i < $lenght; $i++;){echo$text[$i];}// можно и в тело цикла поместить ибо первая часть выполняется лишь разfor($i =0, $lenght = count($text) ; $i < $lenght; $i++;){echo$text[$i];}//альтернативный вариант записиfor($i =0; $i < $lenght; $i++;): ...endfor;
foreach
$languages = ['php','java','c++','go'];foreach($languages as $language){echo$language; // Отдельный элемент массива, идут по порядку}foreach($languages as $key => $language){echo$key; // ключ элемента массива}// изменение элементов массива в цикле с указанием ссылкиforeach($languages as $key => &$language){$language = 'anyValue'; // при этом изменится и сам массив}// после цикла &$language не будет уничтожено и останется доступным в остальном кодеecho$language; // anyValue$language = 'anotherValue'; //изменение произойдетunset($language); //крайне желательно очистить ссылку//перебор массива$user = ['name' => 'SomeName','email' => 'some@mail','dataArray' => [1,2,3],];//если хотим просто вывести все что естьforeach($user as $key => $value){echo$key.':'.json_encode($value) .'<br />';}//или такforeach($user as $key => $value){if(is_array($value)){$value = implode(',', $value); }echo$key.':'.$value.'<br />';}//альтернативный вариант записиforeach($user as $key => $value): ...endforeach;
switch
$paymentStatus = 'paid';// сравнения проходят в нестрогом режиме, как при == // аккуратнее с case 1:switch($paymentStatus){case'paid':echo'Paid';break; // если операция не будет прервана то выполнится следующие действие// независимо от проверки условияcase'declined':echo'Payment Declined';break;default: // не требуется по умолчанию, // switch не будет выполняться вовсе если не найдет нужного caseecho'Uncnown Payment Status';}// на случай если несколько условий делают одно и то жеswitch($paymentStatus){case'paid':echo'Paid';break; case'declined':case'rejected': //и так сколько угодно разecho'Payment Declined';break;}// взаимодействия с цикламиforeach($some as $value){switch($value){case1:echo'anyTextOrFN';break; // тут выход только из switch// для завершения цикла break 2;// continue 2; только так, потому что работать оно должно для циклаcase ... }}// если хотим как то реагировать на результат функции то functionx(){ ... return$value;}switch(x()){ // это лучше чем городить elseif ...}
match
// введено с php 8// использует строгое сравнение === $statusText = match($paymentStatus){1=>'Paid',2=>x(), // но только одно действие, в switch сколько угодно3,4,5=>'Буквально как OR',default: =>'Uncnown Payment Status', // должно быть обязательно для избежания ошибок}