- foreach
- Распаковка вложенных массивов с помощью list()
- PHP foreach Loop
- The PHP foreach Loop
- Syntax
- Examples
- Example
- Example
- COLOR PICKER
- Report Error
- Thank You For Helping Us!
- PHP foreach
- Introduction to the PHP foreach statement
- PHP foreach with indexed arrays
- PHP foreach with an associative array
- Summary
- Изучаем цикл foreach PHP: два способа его использования
- Как цикл foreach PHP работает с числовым массивом
- Цикл foreach PHP — примеры с ключами и значениями массива
- Цикл foreach PHP — примеры изменения значения элемента массива
- Для чего используется цикл foreach PHP?
- Как применять цикл foreach PHP
foreach
Конструкция foreach предоставляет простой способ перебора массивов. Foreach работает только с массивами и объектами, и будет генерировать ошибку при попытке использования с переменными других типов или неинициализированными переменными. Существует два вида синтаксиса:
foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement
Первый цикл перебирает массив, задаваемый с помощью array_expression. На каждой итерации значение текущего элемента присваивается переменной $value и внутренний указатель массива увеличивается на единицу (таким образом, на следующей итерации цикла работа будет происходить со следующим элементом).
Второй цикл будет дополнительно соотносить ключ текущего элемента с переменной $key на каждой итерации.
Замечание:
Когда оператор foreach начинает исполнение, внутренний указатель массива автоматически устанавливается на первый его элемент Это означает, что нет необходимости вызывать функцию reset() перед использованием цикла foreach.
Так как оператор foreach опирается на внутренний указатель массива, его изменение внутри цикла может привести к непредсказуемому поведению.
Для того, чтобы напрямую изменять элементы массива внутри цикла, переменной $value должен предшествовать знак &. В этом случае значение будет присвоено по ссылке.
$arr = array( 1 , 2 , 3 , 4 );
foreach ( $arr as & $value ) $value = $value * 2 ;
>
// массив $arr сейчас таков: array(2, 4, 6, 8)
unset( $value ); // разорвать ссылку на последний элемент
?>?php
Указатель на $value возможен, только если на перебираемый массив можно ссылаться (т.е. если он является переменной). Следующий код не будет работать:
Ссылка $value на последний элемент массива остается даже после того, как оператор foreach завершил работу. Рекомендуется уничтожить ее с помощью функции unset() .
Замечание:
Оператор foreach не поддерживает возможность подавления сообщений об ошибках с помощью префикса ‘@’.
Вы могли заметить, что следующие конструкции функционально идентичны:
$arr = array( «one» , «two» , «three» );
reset ( $arr );
while (list(, $value ) = each ( $arr )) echo «Значение: $value
\n» ;
>
?php
foreach ( $arr as $value ) echo «Значение: $value
\n» ;
>
?>
Следующие конструкции также функционально идентичны:
$arr = array( «one» , «two» , «three» );
reset ( $arr );
while (list( $key , $value ) = each ( $arr )) echo «Ключ: $key ; Значение: $value
\n» ;
>
?php
foreach ( $arr as $key => $value ) echo «Ключ: $key ; Значение: $value
\n» ;
>
?>
Вот еще несколько примеров, демонстрирующие использование оператора:
foreach ( $a as $v ) echo «Текущее значение переменной \$a: $v .\n» ;
>
/* Пример 2: значение (для иллюстрации массив выводится в виде значения с ключом) */
$i = 0 ; /* только для пояснения */
foreach ( $a as $v ) echo «\$a[ $i ] => $v .\n» ;
$i ++;
>
$a = array(
«one» => 1 ,
«two» => 2 ,
«three» => 3 ,
«seventeen» => 17
);
foreach ( $a as $k => $v ) echo «\$a[ $k ] => $v .\n» ;
>
/* Пример 4: многомерные массивы */
$a = array();
$a [ 0 ][ 0 ] = «a» ;
$a [ 0 ][ 1 ] = «b» ;
$a [ 1 ][ 0 ] = «y» ;
$a [ 1 ][ 1 ] = «z» ;
foreach ( $a as $v1 ) foreach ( $v1 as $v2 ) echo » $v2 \n» ;
>
>
/* Пример 5: динамические массивы */
foreach (array( 1 , 2 , 3 , 4 , 5 ) as $v ) echo » $v \n» ;
>
?>
Распаковка вложенных массивов с помощью list()
В PHP 5.5 была добавлена возможность обхода массива массивов с распаковкой вложенного массива в переменные цикла, передав list() в качестве значения.
foreach ( $array as list( $a , $b )) // $a содержит первый элемент вложенного массива,
// а $b содержит второй элемент.
echo «A: $a ; B: $b \n» ;
>
?>
Результат выполнения данного примера:
Можно передавать меньшее количество элементов в list() , чем находится во вложенном массиве, в этом случае оставшиеся значения массива будут проигнорированы:
foreach ( $array as list( $a )) // Обратите внимание на отсутствие $b.
echo » $a \n» ;
>
?>
Результат выполнения данного примера:
Если массив содержит недостаточно элементов для заполнения всех переменных из list() , то будет сгенерировано замечание об ошибке:
foreach ( $array as list( $a , $b , $c )) echo «A: $a ; B: $b ; C: $c \n» ;
>
?>
Результат выполнения данного примера:
Notice: Undefined offset: 2 in example.php on line 7 A: 1; B: 2; C: Notice: Undefined offset: 2 in example.php on line 7 A: 3; B: 4; C:
PHP foreach Loop
The foreach loop — Loops through a block of code for each element in an array.
The PHP foreach Loop
The foreach loop works only on arrays, and is used to loop through each key/value pair in an array.
Syntax
For every loop iteration, the value of the current array element is assigned to $value and the array pointer is moved by one, until it reaches the last array element.
Examples
The following example will output the values of the given array ($colors):
Example
foreach ($colors as $value) echo «$value
«;
>
?>
The following example will output both the keys and the values of the given array ($age):
Example
You will learn more about arrays in the PHP Arrays chapter.
COLOR PICKER
Report Error
If you want to report an error, or if you want to make a suggestion, do not hesitate to send us an e-mail:
Thank You For Helping Us!
Your message has been sent to W3Schools.
Top Tutorials
Top References
Top Examples
Get Certified
W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.
PHP foreach
Summary: in this tutorial, you will learn how to use PHP foreach statement to loop over elements of an array.
Introduction to the PHP foreach statement
PHP provides you with the foreach statement that allows you to iterate over elements of an array, either an indexed array or an associative array.
The foreach statement iterates over all elements in an array, one at a time. It starts with the first element and ends with the last one. Therefore, you don’t need to know the number of elements in an array upfront.
The following flowchart illustrates how the foreach statement works:
PHP foreach with indexed arrays
To iterate over all elements of an indexed array, you use the following syntax:
foreach ($array_name as $element) < // process element here >
Code language: HTML, XML (xml)
When PHP encounters a foreach statement, it assigns the first element of the array to the variable following the as keyword ( $element ).
In each iteration, PHP assigns the next array element to the $element variable. If PHP reaches the last element, the loop ends.
The following example uses the foreach statement to display elements of the $colors array:
$colors = ['red', 'green', 'blue']; foreach ($colors as $color) < echo $color . '
'; >
Code language: HTML, XML (xml)
red green blue
Code language: plaintext (plaintext)
PHP foreach with an associative array
To iterate over elements of an associative array, you use the following syntax:
foreach ($array_name as $key => $value) < //process element here; >
Code language: HTML, XML (xml)
When PHP encounters the foreach statement, it accesses the first element and assigns:
- The key of the element to the $key variable.
- The value of the element to the $value variable.
In each iteration, PHP assigns the key and value of the next element to the variables ( $key and $value ) that follows the as keyword. If the last element is reached, PHP ends the loop.
The following example illustrates how to use the foreach statement to iterate over elements of the captials array:
$capitals = [ 'Japan' => 'Tokyo', 'France' => 'Paris', 'Germany' => 'Berlin', 'United Kingdom' => 'London', 'United States' => 'Washington D.C.' ]; foreach ($capitals as $country => $capital) < echo "The capital city of is $capital" . '
'; >
Code language: HTML, XML (xml)
The capital city of Japan is Tokyo The capital city of France is Paris The capital city of Germany is Berlin The capital city of United Kingdom is London The capital city of United States is Washington D.C.
Code language: plaintext (plaintext)
Summary
- Use the foreach($array_name as $element) to iterate over elements of an indexed array.
- Use the foreach($array_name as $key => $value) to iterate over elements of an associative array.
Изучаем цикл foreach PHP: два способа его использования
Цикл foreach PHP можно использовать следующим образом:
foreach($array_name as $value)< //код, который должен выполняться >
foreach($array_name as $key =>$value)< // //код, который должен выполняться >
Как цикл foreach PHP работает с числовым массивом
В этом примере мы создадим массив из пяти элементов с числовыми значениями. После этого цикл foreach PHP будет использован для выполнения итерации этого массива. Внутри цикла foreach мы использовали echo , чтобы вывести значения массива:
Посмотреть демо-версию и код
Цикл foreach PHP — примеры с ключами и значениями массива
В этом примере описан другой способ использования цикла foreach PHP . Для этого мы создали ассоциативный массив из трех элементов. В него входят имена сотрудников ( в качестве ключей ) и суммы заработной платы ( в качестве значений ):
Посмотреть демо-версию и код
Цикл foreach PHP — примеры изменения значения элемента массива
Также c помощью php foreach array можно изменять значения элементов массива. Для этого используется » & » перед » $ » для переменной значения. Например:
Значение будет изменено. Чтобы вам было понятнее, рассмотрим следующий пример.
В этом примере мы создали числовой массив из пяти элементов. После этого использовали цикл foreach для отображения значений элементов.
Затем создали еще один цикл foreach , где перед $value_of_element добавляется » & «. Внутри фигурных скобок присваиваем новые значения элементам массива.
Чтобы увидеть разницу до и после присвоения новых значений, массив отображается с помощью функции print_r() .
Посмотреть демо-версию и код
Для чего используется цикл foreach PHP?
Цикл foreach PHP используется для работы с массивом. Он перебирает каждый его элемент.
Также можно использовать для работы с массивами цикл for . Например, используя свойство length , чтобы получить длину массива, а затем применить его в качестве оператора max . Но foreach делает это проще, так как он предназначен для работы с массивами.
Если вы работаете с MySQL , то для этого данный цикл подходит еще больше. Например, можно выбрать несколько строк из таблицы БД и передать их в массив. После этого, используя цикл foreach , перебрать все элементы массива с выполнением какого-либо действия.
Обратите внимание, что можно использовать цикл foreach с массивом или только с объектом.
Как применять цикл foreach PHP
В PHP существует два способа использовать цикл foreach PHP. Оба описаны ниже.
foreach($array_name as $value)
При этом нужно указать имя массива, а затем переменную $value .
Для каждой итерации значение текущего элемента присваивается переменной $value . После завершения итерации переменной присваивается значение следующего элемента. И так до тех пор, пока все элементы массива не будут перебраны.
foreach ($array_name as $key_of_element => $value_of_element)< //code to be executed here >
Это подходит для ассоциативных массивов, в которых используются пары ключ / значение.
Во время выполнения каждой итерации значение текущего элемента будет присвоено переменной $value_of_element. Кроме этого ключ элемента присваивается переменной $key_of_element.
Если вы работаете с числовыми массивами, то можно использовать первый метод, в котором не нужны ключи элементов.