foreach
(PHP 4, PHP 5, PHP 7, PHP 8)
Π―Π·ΡΠΊΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ foreach ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡ
ΠΌΠ°ΡΡΠΈΠ²Ρ (array) ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠ»Π°ΡΡΡ ΠΊΠΎΡΠΎΡΡΡ
ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Traversable.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ foreach Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅
ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½ΡΡ
ΠΈΠ»ΠΈ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π²Π° Π²ΠΈΠ΄Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°:
ΠΠ΅ΡΠ²Π°Ρ ΡΠΎΡΠΌΠ° ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΠ΅, Π·Π°Π΄Π°Π½Π½ΡΠ΅
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ iterable_expression. ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $value.
ΠΡΠΎΡΠ°Ρ ΡΠΎΡΠΌΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ ΠΊΠ»ΡΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $key Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ foreach Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ
ΠΌΠ°ΡΡΠΈΠ²Π°, Ρ ΠΊΠΎΡΠΎΡΡΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ current()
ΠΈ key().
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π΄ΠΎΡΡΡΠΏΠ½Π°
Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΠ°Π·ΠΎΠ²Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ foreach
<?php
/* ΠΡΠΈΠΌΠ΅Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ */
$array = [1, 2, 3, 17];
foreach ($array as $value) {
echo "ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° \$array: $value.\n";
}
/* ΠΡΠΈΠΌΠ΅Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ */
$array = [
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => 17
];
foreach ($array as $key => $value) {
echo "ΠΠ»ΡΡ: $key => ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅: $value\n";
}
/* ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΊΠ»ΡΡΠ°ΠΌ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° */
$grid = [];
$grid[0][0] = "a";
$grid[0][1] = "b";
$grid[1][0] = "y";
$grid[1][1] = "z";
foreach ($grid as $y => $row) {
foreach ($row as $x => $value) {
echo "ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΠΈ x=$x ΠΈ y=$y: $value\n";
}
}
/* ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Ρ */
foreach (range(1, 5) as $value) {
echo "$value\n";
}
?>
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ foreach Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ
ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ
@.
Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
(PHP 5 >= 5.5.0, PHP 7, PHP 8)
Π PHP Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°
Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠ»Π°. ΠΠ°ΡΡΠΈΠ² ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°ΡΡ Π»ΠΈΠ±ΠΎ ΠΏΡΡΡΠΌ
Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°
ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ [], Π»ΠΈΠ±ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ list()
ΠΊΠ°ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΊΠ»Π°.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ [] Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ Ρ PHP 7.1.0
Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ ΠΎΡΡΠ°Π²ΡΠΈΠ΅ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ,
Π΅ΡΠ»ΠΈ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΡΠΈΠΊΠ»Π° ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ, ΠΎΡΡΠ°Π²Π»ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΡΡΡ:
ΠΡΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ list()
ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Ρ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅:
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ foreach ΠΈ ΡΡΡΠ»ΠΊΠΈ
ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΡΡΠΌΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π½ΡΡΡΠΈ ΡΠΈΠΊΠ»Π° ΠΏΡΡΡΠΌ ΡΠΊΠ°Π·Π°Π½ΠΈΡ
ΠΏΠ΅ΡΠ΅Π΄ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ $value Π·Π½Π°ΠΊΠ° &,
ΡΠΎΠ³Π΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ
ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅.
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅
Π‘ΡΡΠ»ΠΊΠ° Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ $value ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°
ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π° foreach. ΠΠΎΡΡΠΎΠΌΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡ
ΡΠ½ΠΈΡΡΠΎΠΆΠ°ΡΡ ΡΡΡΠ»ΠΊΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ unset(),
ΠΈΠ½Π°ΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅:
ΠΡΠΈΠΌΠ΅Ρ #2 ΠΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅
<?php
foreach ([1, 2, 3, 4] as &$value) {
$value = $value * 2;
}
?>
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅