Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach

ВсС способы ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массива Π² JavaScript

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅:

I. ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ настоящих массивов

1. ΠœΠ΅Ρ‚ΠΎΠ΄ forEach ΠΈ родствСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

Если ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ рассчитан Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ возмоТностСй стандарта ECMAScript 5 (ES5), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ β€” ΠΌΠ΅Ρ‚ΠΎΠ΄ forEach.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС использованиС forEach Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ эмуляции es5-shim для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ², Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. К Π½ΠΈΠΌ относятся IE 8 ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΠ΅ вСрсии, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎ сих ΠΏΠΎΡ€ ΠΊΠΎΠ΅-Π³Π΄Π΅ Π΅Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ.

К достоинствам forEach относится Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ здСсь Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для хранСния индСкса ΠΈ значСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ элСмСнта массива, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ автоматичСски ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° (ΠΊΠΎΠ»Π±Π΅ΠΊ) Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Если вас бСспокоят Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° Π²Ρ‹Π·ΠΎΠ² ΠΊΠΎΠ»Π±Π΅ΠΊΠ° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта, Π½Π΅ Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ это.

2. Π¦ΠΈΠΊΠ» for

Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ Π΄ΠΎΠ±Ρ€Ρ‹ΠΉ for Ρ€ΡƒΠ»ΠΈΡ‚:

Если Π΄Π»ΠΈΠ½Π° массива Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Π° Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ всСго Ρ†ΠΈΠΊΠ»Π°, Π° сам Ρ†ΠΈΠΊΠ» ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ критичСскому Π² ΠΏΠ»Π°Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ участку ΠΊΠΎΠ΄Π° (Ρ‡Ρ‚ΠΎ маловСроятно), Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽΒ» Π²Π΅Ρ€ΡΠΈΡŽ for с Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄Π»ΠΈΠ½Ρ‹ массива:

ВСорСтичСски этот ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‡ΡƒΡ‚ΡŒ быстрСС, Ρ‡Π΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ.

Если порядок ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° элСмСнтов Π½Π΅ Π²Π°ΠΆΠ΅Π½, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΉΡ‚ΠΈ Π΅Ρ‰Π΅ дальшС Π² ΠΏΠ»Π°Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для хранСния Π΄Π»ΠΈΠ½Ρ‹ массива, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² порядок ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ:

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² соврСмСнных Π΄Π²ΠΈΠΆΠΊΠ°Ρ… JavaScript ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹ с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Ρ‡Π°Ρ‚.

3. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС Ρ†ΠΈΠΊΠ»Π° for. in

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Ρ… массивов, for. in ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ этом ΠΌΠ΅Ρ€Ρ‹ прСдостороТности, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅:

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° трСбуСтся ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ массива, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Π’ΠΎΠ³Π΄Π° Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сократится:

РассмотрСнный Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ, подходящим для всСх случаСв. Но вмСсто Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, хотя Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΈ Π½Π΅ совсСм ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ, Π½ΠΎ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° случаСв:

4. Π¦ΠΈΠΊΠ» for. of (нСявноС использованиС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°)

ES6, ΠΏΠΎΠΊΠ° всС Π΅Ρ‰Π΅ ΠΏΡ€Π΅Π±Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π² статусС Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠ°, Π΄ΠΎΠ»ΠΆΠ΅Π½ ввСсти Π² JavaScript ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования for. of :

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ†ΠΈΠΊΠ» for. of нСявно Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Array для получСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ значСния массива.

5. Π―Π²Π½ΠΎΠ΅ использованиС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°

II. ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ массивоподобных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

1. ИспользованиС способов ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° настоящих массивов

Как ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ, Ссли Π½Π΅ всС, способы ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° настоящих массивов ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массивоподобных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ for ΠΈ for. in ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΊ массивоподобным ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡƒΡ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊ настоящим массивам.

forEach ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Array.prototype Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΊ массивоподобным ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ. Для этого Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² Function.call ΠΈΠ»ΠΈ Function.apply.

Для удобства ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования этого ΠΏΡ€ΠΈΠ΅ΠΌΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ссылку Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ Array.prototype.forEach Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΊΠ°ΠΊ сокращСниС:

Если Π² массивоподобном ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ имССтся ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ явно ΠΈΠ»ΠΈ нСявно для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ способом, ΠΊΠ°ΠΊ ΠΈ для настоящих массивов.

2. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² настоящий массив

НапримСр, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ NodeList Π² настоящий массив, Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

BestProg

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Поиск Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… рСсурсах:

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π° foreach ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° элСмСнтов ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ массива. ΠžΠ±Ρ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° foreach ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ

2. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†ΠΈΠΊΠ»Π° foreach для массивов
2.1. ВычислСниС суммы элСмСнтов массива Ρ‚ΠΈΠΏΠ° double

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

2.2. Поиск максимального значСния Π² массивС

ΠŸΡ€ΠΈΠΌΠ΅Ρ€.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

3. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Ρ†ΠΈΠΊΠ»Π° foreach для ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ

ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для прилоТСния Ρ‚ΠΈΠΏΠ° Console Application ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

3.2. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ Hashtable

ВСкст прилоТСния Ρ‚ΠΈΠΏΠ° Console Application ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

4. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° foreach для Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π° foreach ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов. Π’ этом случаС элСмСнты массива Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² порядкС чтСния строк, ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊ послСднСй.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. Поиск Π² массивС Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ числа.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

6. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° foreach со строками. ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая вычисляСт количСство Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ символа Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ тСкстС.

ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, созданной ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ Console Application ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π¦ΠΈΠΊΠ»Ρ‹ foreach ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

8. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΈ нСдостатки ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†ΠΈΠΊΠ»Π° foreach ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°

МоТно Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСимущСства Ρ†ΠΈΠΊΠ»Π° foreach :

НСдостатки:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

О тонкостях Ρ€Π°Π±ΠΎΡ‚Ρ‹ foreach Π² PHP

Π’ Π½Π΅Π΄Π°Π²Π½Π΅ΠΌ дайдТСстС интСрСсных ссылок ΠΎ PHP я ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» ссылку Π½Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Никиты Попова Π½Π° StackOverflow, Π³Π΄Π΅ ΠΎΠ½ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассказываСт ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌΒ» ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ конструкции foreach.
ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ foreach Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅, Ρ‡Π΅ΠΌ странным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, я счСл ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ этого ΠΎΡ‚Π²Π΅Ρ‚Π°.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: этот тСкст ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ zval’ΠΎΠ² Π² PHP, Π² частности Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ refcount ΠΈ is_ref.
foreach Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с сущностями Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²: с массивами, с простыми ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ (Π³Π΄Π΅ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ доступныС свойства) ΠΈ с Traversable-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ (Π²Π΅Ρ€Π½Π΅Π΅, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ get_iterator). Π—Π΄Π΅ΡΡŒ ΠΌΡ‹, Π² основном, Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ массивах, Π½ΠΎ я скаТу ΠΈ ΠΎΠ± ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π² самом ΠΊΠΎΠ½Ρ†Π΅.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ, ΠΏΠ°Ρ€Π° слов ΠΎ массивах ΠΈ ΠΈΡ… ΠΎΠ±Ρ…ΠΎΠ΄Π΅, ваТная для понимания контСкста.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ±Ρ…ΠΎΠ΄ массивов

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² PHP ΡΠ²Π»ΡΡŽΡ‚ΡΡ упорядочСнными Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ (элСмСнты Ρ…Π΅ΡˆΠ° ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π² двусвязный список) ΠΈ foreach ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ массив, слСдуя ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ порядку.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, внСшниС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ массива ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. А Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π² самом Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠΌ мСстС, Ρ‚ΠΈΠΏΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ошибок ΠΈΠ»ΠΈ дСструктора. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв PHP приходится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ вмСсто внСшнСго. Если Π±Ρ‹ это Π±Ρ‹Π»ΠΎ ΠΈΠ½Π°Ρ‡Π΅, PHP ΠΌΠΎΠ³ Π±Ρ‹ ΡƒΠΏΠ°ΡΡ‚ΡŒ ΠΈΠ·-Π·Π° segmentation fault, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°Ρ‡Π½Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ указатСля Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ HashTable. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ измСняСтС Π΅Π³ΠΎ, HashTable мСняСтся вмСстС с Π½ΠΈΠΌ. И коль скоро ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ массивам Π² PHP дСлаСтся ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ (Π° Π½Π΅ ΠΏΠΎ ссылкС), Π²Ρ‹ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Π³ΠΎ элСмСнты.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ копирования (кстати, Π½Π΅ такая большая Ρ€Π΅Π΄ΠΊΠΎΡΡ‚ΡŒ), это влоТСнная итСрация:

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π° Ρ†ΠΈΠΊΠ»Π° Π±Ρ‹Π»ΠΈ нСзависимым, Π° Π½Π΅ Ρ…ΠΈΡ‚Ρ€ΠΎ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°ΡΡ‹Π²Π°Π»ΠΈΡΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ.

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ дошли Π΄ΠΎ foreach.

ΠžΠ±Ρ…ΠΎΠ΄ массива Π² foreach

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, для Ρ‡Π΅Π³ΠΎ foreach приходится ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ копию массива, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π΅Π³ΠΎ. Но это явно Π½Π΅ вся история. Π‘Π΄Π΅Π»Π°Π΅Ρ‚ PHP копию ΠΈΠ»ΠΈ Π½Π΅Ρ‚, зависит ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ²:

Π˜Ρ‚Π°ΠΊ, это пСрвая Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Π°ΠΉΠ½Ρ‹: функция копирования. Вторая Ρ‡Π°ΡΡ‚ΡŒ это Ρ‚ΠΎ, ΠΊΠ°ΠΊ тСкущая итСрация выполняСтся, ΠΈ ΠΎΠ½Π° Ρ‚ΠΎΠΆΠ΅ довольно странная. Β«ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉΒ» ΠΎΠ±Ρ€Π°Π·Π΅Ρ† ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅ (ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² PHP β€” ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ foreach) выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ (псСвдокод):

итСрация foreach выглядит Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π°Ρ‡Π΅:

Π’Π°ΠΊΠΎΠΉ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ foreach Ρ‚Π°ΠΊΠΆΠ΅ являСтся ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ массива ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ элСмСнту, Ссли Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΠ΄Π°Π»Ρ‘Π½, Π° Π½Π΅ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ (ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ). Всё сдСлано Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с foreach (Π½ΠΎ, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, со всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Ρ‚Π°ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, пропуская элСмСнты).

ΠŸΠΎΡΠ»Π΅Π΄ΡΡ‚Π²ΠΈΡ для ΠΊΠΎΠ΄Π°

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ слСдствиС Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ повСдСния Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ foreach ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ массив Π² ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях (ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ). Но ΠΎΡ‚Ρ€ΠΈΠ½ΡŒΡ‚Π΅ страх: я ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ копирования ΠΈ Π½Π΅ смог ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½ΠΈΠ³Π΄Π΅, ΠΊΡ€ΠΎΠΌΠ΅ искусствСнных Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ² (Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… итСрация происходила Π² Π΄Π²Π° Ρ€Π°Π·Π° быстрСС). ΠŸΠΎΡ…ΠΎΠΆΠ΅, люди просто Π½Π΅ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ достаточно ΠΌΠ½ΠΎΠ³ΠΎ.

Π’Ρ‚ΠΎΡ€ΠΎΠ΅ слСдствиС Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΡ… слСдствий. ПовСдСниС foreach, Π² основном, Π²ΠΏΠΎΠ»Π½Π΅ понятно ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈ просто Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ слСдуСт. Вас Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ»Π½ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ происходит ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΈ происходит Π»ΠΈ ΠΎΠ½ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅), ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ пСрСмСщаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

И Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ слСдствиС β€” ΠΈ Ρ‚ΡƒΡ‚ ΠΌΡ‹ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ вашим ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ β€” Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΎΡ‡Π΅Π½ΡŒ странноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ. Π­Ρ‚ΠΎ происходит ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сам массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π² Ρ†ΠΈΠΊΠ»Π΅.

Π‘ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ повСдСния Π² ΠΏΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… случаях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ массив Π² Ρ…ΠΎΠ΄Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² тСстах PHP. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ с этого тСста, послС Ρ‡Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ 012 Π½Π° 013 Π² адрСсС, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ foreach Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ситуациях (всякиС ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ ссылок ΠΈ.Ρ‚.Π΄.).

А сСйчас вСрнёмся ΠΊ вашим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ:

Π’Π° ΠΆΠ΅ ситуация, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ тСстС.

Но эти ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ нСдостаточно ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹. ПовСдСниС Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎ настоящСму нСпрСдсказуСмым, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ current Π² Ρ†ΠΈΠΊΠ»Π΅:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСбольшоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅:

Π—Π΄Π΅ΡΡŒ Ρƒ нас is_ref=1, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ массив Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈ Π²Ρ‹ΡˆΠ΅). Но сСйчас ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ is_ref, массив большС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ, пСрСдавая ΠΏΠΎ ссылкС ΠΊ current. Π’Π΅ΠΏΠ΅Ρ€ΡŒ current ΠΈ foreach Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΠΎΠ΄Π½ΠΈΠΌ массивом. Π’Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ массив сдвинутым Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ foreach обращаСтся с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ.

Π’ΠΎ ΠΆΠ΅ самоС Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ…ΠΎΠ΄ массива ΠΏΠΎ ссылкам:

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° нСбольшая вариация, здСсь ΠΌΡ‹ присвоим наш массив Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

ΠŸΡ€ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ смысл Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΄Π²Π° случая:

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ Traversable (Π²Π΅Ρ€Π½Π΅Π΅, Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ get_iterator)

Π’ этом случаС итСрация происходит ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρƒ массивов. Π’Π° ΠΆΠ΅ сСмантика копирования. ЕдинствСнноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅: foreach запустит Π½Π΅ΠΊΠΈΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ свойства, нСдоступныС Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ области видимости. Π•Ρ‰Π΅ ΠΏΠ°Ρ€Π° интСрСсных Ρ„Π°ΠΊΡ‚ΠΎΠ²:

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Traversable

Π’ этом случаС всё, Ρ‡Ρ‚ΠΎ сказано Π²Ρ‹ΡˆΠ΅, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π½ΠΈΠΊΠΎΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’Π°ΠΊΠΆΠ΅ PHP Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Ρ‚Ρ€ΡŽΠΊΠΈ Π²Ρ€ΠΎΠ΄Π΅ увСличСния указатСля Π΄ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° Ρ†ΠΈΠΊΠ»Π°. Π― Π΄ΡƒΠΌΠ°ΡŽ Ρ‡Ρ‚ΠΎ Ρ€Π΅ΠΆΠΈΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° ΠΏΠΎ ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΌΡƒ (Traversable) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΊΡƒΠ΄Π° Π±ΠΎΠ»Π΅Π΅ прСдсказуСм ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ дальнСйшСго описания.

Π—Π°ΠΌΠ΅Π½Π° ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²ΠΎ врСмя Ρ†ΠΈΠΊΠ»Π°

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ случай, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Π½Π΅ упомянул β€” PHP допускаСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²ΠΎ врСмя Ρ†ΠΈΠΊΠ»Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ с ΠΎΠ΄Π½ΠΈΠΌ массивом ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ, Π·Π°ΠΌΠ΅Π½ΠΈΠ² Π΅Π³ΠΎ Π½Π° ΠΏΠΎΠ»Π΄ΠΎΡ€ΠΎΠ³Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌ. Или Π½Π°Ρ‡Π°Ρ‚ΡŒ с массивом, Π² Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ:

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, PHP просто Π½Π°Ρ‡Π°Π» ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° Π·Π°ΠΌΠ΅Π½Π°.

ИзмСнСниС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ указатСля массива Π²ΠΎ врСмя ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ

ПослСдняя Π΄Π΅Ρ‚Π°Π»ΡŒ повСдСния foreach, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я Π½Π΅ упомянул (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для получСния ΠΏΠΎ настоящСму странного повСдСния): Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ссли ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ массива Π²ΠΎ врСмя ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° Ρ†ΠΈΠΊΠ»Π°.

Π’ΡƒΡ‚ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ: Ссли Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ next ΠΈΠ»ΠΈ prev Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° (Π² случаС ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠΎ ссылкС), Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ пСрСмСстился, Π½ΠΎ это Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ повлияло Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ foreach Π΄Π΅Π»Π°Π΅Ρ‚ Π±Π΅ΠΊΠ°ΠΏ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈ Ρ…Π΅ΡˆΠ° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ элСмСнта Π² HashPointer послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° Ρ†ΠΈΠΊΠ»Π°. На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ foreach ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚, Π½Π΅ мСнялась Π»ΠΈ позиция Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ указатСля ΠΈ попытаСтся Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот Ρ…Π΅Ρˆ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «попытаСтся». ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ указатСля Π½Π΅ мСняСт Ρ€Π΅ΠΆΠΈΠΌ foreach:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ unset элСмСнту, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ обратится foreach ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ (ΠΊΠ»ΡŽΡ‡ 1):

Π’ΡƒΡ‚ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ счСтчик ΡΠ±Ρ€ΠΎΡˆΠ΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ элСмСнт с подходящим Ρ…Π΅ΡˆΠΎΠΌ.

Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ…Π΅Ρˆ β€” всСго лишь Ρ…Π΅Ρˆ. Π‘Π»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Π°ΠΊ:

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ. ΠœΡ‹ ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ ΠΊΠ»ΡŽΡ‡ EzFY (Ρ‚ΠΎΡ‚, Π³Π΄Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π· Π±Ρ‹Π» foreach), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» сдСлан сброс. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, поэтому Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ 4.

И Π²ΠΎΡ‚ Ρ‚ΡƒΡ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π΅Π²Π΅Π΄ΠΎΠΌΠΎΠ΅. Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚, Ссли Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡ FYFY с FYFZ? Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ:

БСйчас Ρ†ΠΈΠΊΠ» ΠΏΠ΅Ρ€Π΅ΡˆΡ‘Π» нСпосрСдствСнно ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ элСмСнту, пропуская всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡ FYFY ΠΈΠΌΠ΅Π΅Ρ‚ коллизию с EzFY (Π²ΠΎΠΎΠ±Ρ‰Π΅-Ρ‚ΠΎ, всС ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈΠ· этого массива Ρ‚ΠΎΠΆΠ΅). Π‘ΠΎΠ»Π΅Π΅ этого, элСмСнт FYFY находится ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ адрСсу Π² памяти, Ρ‡Ρ‚ΠΎ ΠΈ элСмСнт EzFY ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» ΡƒΠ΄Π°Π»Π΅Π½. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ для PHP это Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π° ΠΆΠ΅ самая позиция с Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ…Π΅ΡˆΠΎΠΌ. ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ «восстановлСна» ΠΈ происходит ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ массива.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π¦ΠΈΠΊΠ» for each Π² Java

Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π€ΠΎΡ‚ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreachКак Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π€ΠΎΡ‚ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreachКак Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π€ΠΎΡ‚ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreachКак Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π€ΠΎΡ‚ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreachКак Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π€ΠΎΡ‚ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreachКак Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π€ΠΎΡ‚ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΠ΅ΠΌ Вас Π½Π° страницС Π±Π»ΠΎΠ³Π° Vertex Academy.

Π’Ρ‹ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ Π² написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ?

Π¦ΠΈΠΊΠ» for each :

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим ΠΊΠ°ΠΊ выглядит общая Ρ„ΠΎΡ€ΠΌΠ° Ρ†ΠΈΠΊΠ»Π° for ΠΈ Ρ†ΠΈΠΊΠ»Π° for each.

1.ΠžΠ±Ρ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° Ρ†ΠΈΠΊΠ»Π° for:

2.ΠžΠ±Ρ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° Ρ†ΠΈΠΊΠ»Π° for each:

Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π€ΠΎΡ‚ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreachΠ’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π² Ρ†ΠΈΠΊΠ»Π΅ for each Ρ‚ΠΈΠΏ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡƒ массива!

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π² Ρ‡Π΅ΠΌ ΠΆΠ΅ всС-Ρ‚Π°ΠΊΠΈ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ этим 2 Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡Ρƒ 2-мя способами:

1. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° for

2. C ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° for each

Π—Π°Π΄Π°Ρ‡Π° β„–1

НСобходимо ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ всС элСмСнты массива ΠΈ вывСсти Π² консоль.

РСшСниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° for

Если Π’Ρ‹ запуститС Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ‚ΠΎ Π² консоли Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

РСшСниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° for each

Если Π’Ρ‹ запуститС Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ‚ΠΎ Π² консоли Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreach. Π€ΠΎΡ‚ΠΎ Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ†ΠΈΠΊΠ» foreachΠ’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π² Ρ†ΠΈΠΊΠ»Π΅ for each Ρ‚ΠΈΠΏ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡƒ массива!

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ массив Ρƒ нас Ρ‚ΠΈΠΏΠ° int. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² конструкции Ρ†ΠΈΠΊΠ»Π° for each ΠΌΡ‹ написали:

Π—Π°Π΄Π°Ρ‡Π° β„–2

НСобходимо ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ всС элСмСнты ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Arraylist. Если Π’Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ «Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Arraylist Π² Java».

1.РСшСниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° for

Если Π’Ρ‹ запуститС Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ‚ΠΎ Π² консоли Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

2.РСшСниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° for each

Если Π’Ρ‹ запуститС Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ‚ΠΎ Π² консоли Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» for each ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ, ΠΊΠΎΠ³Π΄Π° Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ вывСсти Π½Π° экран всС элСмСнты массива/ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ всС элСмСнты с ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива/ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

НадССмся, Ρ‡Ρ‚ΠΎ наша ΡΡ‚Π°Ρ‚ΡŒΡ Π±Ρ‹Π»Π° Π’Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π½Π°. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° наши курсы ΠΏΠΎ Java Π² КиСвС. ΠžΠ±ΡƒΡ‡Π°Π΅ΠΌ с нуля. Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Ρƒ нас Π½Π° сайтС.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

forEach() JS β€” ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массива

ΠœΠ΅Ρ‚ΠΎΠ΄ forEach() Π² языкС JS ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° всСх элСмСнтов массива. Π”Π°Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ β€” ΠΎΠ½ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΈ выполняСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΡƒΡŽ Π΅ΠΌΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚

array.forEach(function callback(currentValue, index, currentArray)[, thisArg]);

callback β€” Ρ‚Π° самая функция, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° forEach
Callback ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ стрСлочной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

Π‘Π°ΠΌΡ‹ΠΉ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Рассмотрим Π±ΠΎΠ»Π΅Π΅ слоТный ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π£ вас Π² html Π΅ΡΡ‚ΡŒ список

    , ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ· массива Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅:

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ с html смотритС Ρ‚ΡƒΡ‚:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ массив ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ условии. НапримСр, Π² массивС ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²Ρ‹ΡˆΠ΅, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Toyota Π½Π° Lexus:

ПишСм свой forEach с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π°

Π’ JS ΠΌΠ΅Ρ‚ΠΎΠ΄ forEach сдСлан для удобства, Π½ΠΎ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΠΎ массиву ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» for.

ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ массива ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

Π‘ΠΊΠΎΡ€Π΅Π΅ всСго Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π²Π°ΠΌ Ρ‡Π°Ρ‰Π΅ всСго придСтся Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ массива ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ вывСсти ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. Π£ нас Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ сСрвСра с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈ возрастом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Нам Π½ΡƒΠΆΠ½ΠΎ вывСсти Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡ‚Π°Ρ€ΡˆΠ΅ 18

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ user ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠœΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ свойство age ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ if ΠΌΡ‹ провСряСм соотвСтствуСт Π»ΠΈ возраст ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π°ΡˆΠ΅ΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ (18 Π»Π΅Ρ‚). Если Π΄Π°, Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ имя Π² консоль.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ всСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ свойство city.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *