Switch для массива php

Цикл foreach
Операторы switch, case

Конструкция foreach (php.net) — предоставляет простой способ перебора массивов . Цикл foreach специально сделан для для того, чтобы переберать элементы массива одного за другим. Не важно какие ключи у массива: числовые, строковые (нумерованные массивы или ассоциативные), не важно, идут-ли числовые ключи по порядку или с разрывами — для цикла foreach ни какой роли это не играет. Он просто берет массив и переберает один элемент за другим до самого конца массива. Это цикл специально создавался для массивов, то есть проводить с ним теже самые операции, что и с циклами while и for , не получиться и php выдаст ошибку при попытке использования с переменными других типов или неинициализированными переменными.

Существует два вида синтаксиса :

Первый цикл перебирает массив, задаваемый с помощью переменной $array . На каждой итерации значение текущего элемента присваивается переменной $value и внутренний указатель массива увеличивается на единицу:

foreach ( $array as $value )
<
Тело цикла
>

Второй цикл дополнительно присвоит ключ текущего элемента переменной $key на каждой итерации:

foreach ( $array as $key => $value )
<
Тело цикла
>

Первый вариант синтаксиса foreach

$arr = [ ‘Ivanov’ , ‘Petrov’ , ‘Sidorov’ ];
$arr [ 5 ] = ‘Pupkin’ ; // добавит в массив $arr ‘Pupkin’ c ключем 5
$arr [] = ‘Vaskin’ ; // добавит в конец массива ‘Vaskin’ c ключем 6
print_r ( $arr );

print_r($arr) выведет:
Array ( [0] => Ivanov [1] => Petrov [2] => Sidorov [5] => Pupkin [6] => Vaskin )

echo $item выведет:
Ivanov
Petrov
Sidorov
Pupkin
Vaskin

— где $arr — название массива,

$item — временная переменная.

То есть, мы проходимся по массиву $arr , берем каждый его конкретный элемент как,

и далее мы указываем в какую временную переменную мы его поместим. На каждой итерации

цикла в переменную $item попадает каждый конкретный элемент массива.

Пример со строковыми ключами:

$names = [
‘Ivan’ => ‘Ivanov’ ,
‘Petr’ => ‘Petrov’ ,
‘Sidor’ => ‘Sidorov’ ,
];
foreach ( $names as $name ) <
echo $name . ‘
‘ ;
>
?>
выведет:
Ivanov
Petrov
Sidorov

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

Второй вариант синтаксиса foreach

foreach ( $names as $key => $name ) echo «Name: $key , Surname: $name
» ;
>
?>
выведет:
Name: Ivan, Surname: Ivanov
Name: Petr, Surname: Petrov
Name: Sidor, Surname: Sidorov

— здесь на каждой итерации цикла в переменную $name , как и прежде, попадает значение каждого конкретного элемент массива, а в переменную $key попадет ключ.

foreach ( $arr as $k => $v ) <
echo «Key: $k , Sname: $v
» ;
>
?>
выведет:
Key: 0, Sname: Ivanov
Key: 1, Sname: Petrov
Key: 2, Sname: Sidorov
Key: 5, Sname: Pupkin
Key: 6, Sname: Vaskin

Операторы switch, case

Оператор switch — это по сути тоже самое условие, которое часто применяется в том случае, когда нам нужно перебрать множество различных вариантов условия.

Работа оператора switch похожа на работу конструкции if — elseif — else . Он выполняет ту же функцию, но позволяет немного упростить код, сделать его более понятным.

Для наглядности сравним работу эти конструкций.

Пример работы конструкции if — elseif — else :

$var = 3 ;
if ( $var == 1 ) echo ‘Variable = 1’ ;
> elseif ( $var == 2 ) echo ‘Variable = 2’ ;
> elseif ( $var == 3 ) echo ‘Variable = 3’ ;
> else echo ‘Something else. ‘ ;
>
// выведет: Variable = 3
?>

Пример работы оператора switch :

$var = 3 ;
switch ( $var ) case 1 :
echo ‘Variable = 1’ ;
break ;
case 2 :
echo ‘Variable = 2’ ;
break ;
case 3 :
echo ‘Variable = 3’ ;
break ;
default :
echo ‘Something else. ‘ ;
>
// выведет: Variable = 3
?>

— где $var — переменная, которую мы будем проверять;

— внутри операторных скобок, с помощью оператора case (кейс), мы задаем значение с которым мы сравниваем нашу переменную $var ;

— затем выполняется тот самый код, который должен быть выполнен в случае, если наше

условие выполняется (в нашем случае, если $var = 3 );

— после этого используем оператор break — для того, чтобы не срабатывали последующие кейсы;

— в конце кода записываем оператор default (по умолчанию) — это аналог else .

Источник

Switch для массива php

Оператор switch похож на ряд операторов IF с одинаковым условием. Во многих случаях вам может понадобиться сравнивать одну и ту же переменную (или выражение) с множеством различных значений и выполнять различные участки кода в зависимости от того, какое значение принимает эта переменная (или выражение). Это именно тот случай, для которого удобен оператор switch .

Замечание: Обратите внимание, что в отличие от некоторых других языков, оператор continue применяется в конструкциях switch и действует подобно оператору break . Если у вас конструкция switch находится внутри цикла, и вам необходимо перейти к следующей итерации цикла, используйте continue 2 .

Замечание:

Заметьте, что конструкция switch/case использует нестрогое сравнение (==).

В следующем примере каждый блок кода эквивалентен. В одном используется серия операторов if и elseif , а в другом — оператор switch . В каждом случае результат один и тот же.

Пример #1 Оператор switch

switch ( $i ) case 0 :
echo «i равно 0» ;
break;
case 1 :
echo «i равно 1» ;
break;
case 2 :
echo «i равно 2» ;
break;
>

if ( $i == 0 ) echo «i равно 0» ;
> elseif ( $i == 1 ) echo «i равно 1» ;
> elseif ( $i == 2 ) echo «i равно 2» ;
>
?>

Пример #2 Оператор switch допускает сравнение с типом string

switch ( $i ) case «яблоко» :
echo «i это яблоко» ;
break;
case «шоколадка» :
echo «i это шоколадка» ;
break;
case «пирог» :
echo «i это пирог» ;
break;
>
?>

Важно понять, как оператор switch выполняется, чтобы избежать ошибок. Оператор switch исполняет строчка за строчкой (на самом деле выражение за выражением). В начале никакой код не исполняется. Только в случае нахождения оператора case , значение которого совпадает со значением выражения в операторе switch , PHP начинает исполнять операторы. PHP продолжает исполнять операторы до конца блока switch либо до тех пор, пока не встретит оператор break . Если вы не напишете оператор break в конце секции case, PHP будет продолжать исполнять команды следующей секции case. Например :

switch ( $i ) case 0 :
echo «i равно 0» ;
case 1 :
echo «i равно 1» ;
case 2 :
echo «i равно 2» ;
>
?>

В этом примере, если $i равно 0, то PHP исполнит все операторы echo! Если $i равно 1, PHP исполнит два последних оператора echo. Вы получите ожидаемое поведение оператора (‘i равно 2’ будет отображено) только, если $i будет равно 2. Таким образом, важно не забывать об операторах break (даже если вы, возможно, хотите избежать его использования по назначению при определённых обстоятельствах).

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

Список операторов для исполнения в секции case также может быть пустым, что просто передаёт управление списку операторов в следующей секции case.

switch ( $i ) case 0 :
case 1 :
case 2 :
echo «i меньше чем 3, но неотрицательный» ;
break;
case 3 :
echo «i равно 3» ;
>
?>

Специальный вид конструкции case — default . Сюда управление попадает тогда, когда не сработал ни один из других операторов case. Например:

switch ( $i ) case 0 :
echo «i равно 0» ;
break;
case 1 :
echo «i равно 1» ;
break;
case 2 :
echo «i равно 2» ;
break;
default:
echo «i не равно 0, 1 или 2» ;
>
?>

Замечание: Несколько указаний default вызовут ошибку E_COMPILE_ERROR .

Замечание: Формально конструкция default может быть перечислена в любом месте. Она будет использоваться только в том случае, если ни один другой вариант не подходит. Однако, по соглашению, лучше всего поместить её в конец, как последнюю конструкцию.

Если ни одна конструкция case не совпадает и нет конструкции default , то код не будет выполнен, как если бы ни одно утверждение if не было истинным.

Значение case может быть задано в виде выражения. Однако это выражение будет оценено само по себе, а затем слабо сопоставлено со значением switch. Это означает, что его нельзя использовать для сложных оценок значения switch. Например:

switch ( $target ) case $start — 1 :
print «A» ;
break;
case $start — 2 :
print «B» ;
break;
case $start — 3 :
print «C» ;
break;
case $start — 4 :
print «D» ;
break;
>

Для более сложных сравнений в качестве значения switch может использоваться значение true . Или, как вариант, вместо switch использовать блоки if — else .

switch ( true ) case $start — $offset === 1 :
print «A» ;
break;
case $start — $offset === 2 :
print «B» ;
break;
case $start — $offset === 3 :
print «C» ;
break;
case $start — $offset === 4 :
print «D» ;
break;
>

Возможен альтернативный синтаксис для управляющей структуры switch. Для более детальной информации, смотрите Альтернативный синтаксис для управляющих структур.

switch ( $i ):
case 0 :
echo «i равно 0» ;
break;
case 1 :
echo «i равно 1» ;
break;
case 2 :
echo «i равно 2» ;
break;
default:
echo «i не равно 0, 1 или 2» ;
endswitch;
?>

Возможно использование точки с запятой вместо двоеточия после оператора case. К примеру :

switch( $beer )
case ‘tuborg’ ;
case ‘carlsberg’ ;
case ‘stella’ ;
case ‘heineken’ ;
echo ‘Хороший выбор’ ;
break;
default;
echo ‘Пожалуйста, сделайте новый выбор. ‘ ;
break;
>
?>

Источник

Читайте также:  Читы для steam для css
Оцените статью