😎 » PHP - FAQ » Условия и циклы в PHP
446 0  

Условия и циклы в PHP

Условия в PHP позволяют сравнивать переменные, а циклы выполнять похожую операцию много раз.

Очень часто используется тернарный оператор:

$str = $a > $b ? 'вывод исли $a больше $b' : 'вывод если $a меньше или равно $b';
echo $str;

*  в скобках после ? - если условие tru, в скобках после : - если false.


Самое простое условие: если в круглых скобках истина то выведет то что в фигурных, если ложь то пропустит и будет выполнять код дальше.

//Вывести - Ты подросток если переменная age меньше 15:

if($age < 15) echo "Ты подросток";

Немного усложняемся: если в круглых скобках истина то выведет первое условие, а если ложь то второе после else:

//выведет 20 - наибольшее из двух значений:

<?php
    $x = 10;
    $y = 20;

    if ($x >= $y) echo "$x";
    else echo "$y";

?>

am если первая и второя инструкция состоит из нескольких страниц то уже нужны фигурные скобки.

Можно использовать знак && чтобы искать значение переменной age между 13 и 19.

если в первых фигурных скобках ложь, проверяется второе условие на истину- если здесь правда - выводим вторые фигурные скобки.

<?php
    $age = 21;

    if ($age<=13) {echo "Child.";} 
    elseif ($age>13 && $age<19) {echo "Teenager";} 
    else {echo "Adult";}
?>
// Або в коді HTML:
<?php if ($a == 5): ?>
A равно 5
<?php endif; ?>

Цикл while

Цикл while выполняет блок кода пока указаное в скобках условие - ВЕРНОЕ!

what Если условие никогда не становится ложным, то выражение будет бесконечным!

$i = 1;
while ($i <= 10) {
    echo $i++;  
}
выведет: - 12345678910

С помощью циклов можно работать и со строками:

<?php
function printNameBySymbol($name)
{
    $i = 0;
    // Такая проверка будет выполняться до конца строки
    // включая последний символ. Его индекс `длина строки - 1`.
    while ($i < strlen($name)) {
        // Обращаемся к символу по индексу
        print_r("$name[$i]\n");
        $i = $i + 1;
    }
}
$name = 'Arya';
printNameBySymbol($name);
// => 'A'
// => 'r'
// => 'y'
// => 'a'

Условие в while можно сделать сразу двумя способами: $i < strlen($name) или $i <= strlen($name) - 1. Оба приведут к одному результату.

Цикл do while

Цикл do while выполняет блок коди минимум 1 раз, проверяет условие, и повторяет цикл пок условие верное.

what код всегда будет выполнен 1 раз!

<?php
$i = 0;
do {
    echo $i;
} while ($i > 0);
?>
// даже здесь цикл выполнится 1 раз.

Цикл for

Цикл for используется тогда, когда вы заранее знаете, сколько раз должен запуститься скрипт.

init: Инициализирует значение счетчика цикла

test: Вычисляется при каждой итерации цикла, продолжая выполнение, если условие верно, и останавливаясь, если условие ложно

increment: Увеличивает значение счетчика цикл

for (init; test; increment) {
   code to be executed;
}
//=========
<?php
    for ($a = 0; $a < 6; $a++) {
        echo "Value of a : ". $a . "<br />";
    }
?>

belay Цикл for в примере выше сначала устанавливает переменную $a равной 0, затем проверяет условие ($a < 6). Если условие верно, то запускается код. После этого происходит инкрементирование переменной $a ($a++).

Цикл foreach

Цикл foreach работает только с массивами, и используется для прохождения по каждой паре ключ/значение в массиве.

foreach (array as $key => $value) {
   code to be executed;
}
// Здесь при каждой итерации будет дополнительно присваивать текущий ключ элемента к переменной $key.

<?php
    $names = array("John", "David", "Amy");
    foreach ($names as $name) {
        echo $name.'<br />';
    }
?>
// Выведет каждую позицию с новой строки
//John
//David
//Amy
// Якщо масив двомірний тоді запуускаєм форіч в середені батькіськаго форіч
    foreach ($_POST as $item) {
            foreach ($item as $subitem) {
                $result[] = $subitem;
            }
        }
//Додати багатовимірний масив в БД:
    foreach($keyimg as $k => $v) {
        foreach($v as $key => $val) {
            $arr_res[$key][$k] = $val;
        }
    }
//сам Запит - INSERT INTO `table`(`name`, `text`, `img`, `tegs`) VALUES ('.....')
$query = "INSERT INTO `table`(`name`, `text`, `img`, `tegs`) VALUES ('";
foreach ($name as $key=>$name_val){
    $query .= $name_val.','.$text[$key].','.$img[$key].','.tegs[$key];
}
$query .= "')";

Як цикл форіч і фор використовувати в штмл шаблонах?

   //Використали функцію " list range(int $low, int $high) " Яка генерить масив для швидкого проходження по ньому циклом foreach:
<table>
        <?php foreach (range(1,10) as $i) { ?>
            <tr>
                <td><?= $i ?></td>
            </tr>
        <?php } ?>

    </table>
    <table>
        <?php for ($i = 1; $i<=10; $i++) { ?>
            <tr>
                <td><?= $i ?></td>              
            </tr>
        <?php } ?>
    </table>
//Ці два цикла виведуть один і той же результат:
<table>
	<tr>
		<td>1</td>
	</tr>
	<tr>
		<td>2</td>
	</tr>
	<tr>
		<td>3</td>
	</tr>
	<tr>
		<td>4</td>
	</tr>
	<tr>
		<td>5</td>
	</tr>
	<tr>
		<td>6</td>
	</tr>
	<tr>
		<td>7</td>
	</tr>
	<tr>
		<td>8</td>
	</tr>
	<tr>
		<td>9</td>
	</tr>
	<tr>
		<td>10</td>
	</tr>
</table>

Оператор switch:

 switch немедленно отправляется к соответствующему case, и прекращает оценивать все другие условия, которые потребуются в цепочке if-else.

// 1-й спосіб запису switch
$a = 3;
switch($a)
{
case 1: echo "додавання"; break;
case 2: echo "віднімання"; break;
default: echo "дія по замовчуванню"; break;
}

// 2-й спосіб запису switch
$a = 3; 
switch($a)
case 1: echo "додавання"; break;
case 2: echo "віднімання"; break;
default: echo "дія по замовчуванню"; break;
endswitch

Ключевое слово break, которое следует за каждым case, используется для предотвращения автоматического перехода в следующий сектор case. Если вы забудете указать выражение break;, то PHP автоматически продолжит выполняться через последующие выражения case, даже если они не соответствуют выражению.

Как вернуть switch из функции - смотреть

В чем разница между switch и elseif?

В операторе switch выражение вычисляется один раз и этот результат сравнивается с каждым оператором case. В выражении elseif, выражение вычисляется снова. Если ваше условие более сложное, чем простое сравнение и/или находится в цикле, конструкция switch работает быстрее. fellow Используем switch когда много условий!


Оператор break

Оператор break заканчивает текущий for, foreach, while, do-while или switch и продолжает выполнять программу со строки, расположенной сразу после цикла.

Оператор break во внешней части программы (т.е., не в управляющем цикле) остановит скрипт.

<?php
    $x=1;
    switch ($x) {
        case 1:
            echo "One";
        case 2:
            echo "Two";
        case 3:
            echo "Three";
        default:
            echo "No match";
    }
?>
//Выведет: OneTwoThreeNo match

* Если оператор break отсутствует, то код продолжает выполняться.

Оператор continue

При использовании внутри структуры цикла, оператор continue позволяет пропустить то,

что осталось от текущей итерации цикла и перейти к следующей. Затем выполнение продолжается с подсчета условия и происходит переход к началу следующей итерации.

Следующий пример пропускает четные числа в цикле for:

<?php
    for ($i=0; $i<10; $i++) {
        if ($i%2==0) {
            continue;
        }
        echo $i . ' ';
    }
?>
//Выведет: 1 3 5 7 9

fellow Вы можете использовать оператор continue со всеми цикличными структурами.


bully в 8 версії PHP з'явився вираз - match:

// 1-й спосіб запису match
$a = 2;
match($a)
{
1 => $operation = "сложение",
2 => $operation = "вычитание",
default => $operation = "действие по умолчанию",
};
echo $operation;

// 2-й спосіб запису match 
$a = 2;
$operation = match($a)
{
1 => "додавання",
2 => "віднімання",
default => "действие по умолчанию",
};
echo $operation;

// Приклад використання конструкції match:
$food = 'cake';
$return_value = match ($food) {
    'apple' => 'На столі лежить яблуко',
    'banana' => 'На столі лежить банан',
    'cake' => 'На столі стоїть торт',
};
var_dump($return_value);

//Результат string(35) "На столі стоїть торт"

Документація на офіційному сайті - глипнути


Залишити свій коментар:

Досвід у веброзробці:

2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2009
2023