Ще одна корисна конструкція. Вона з'явилася тільки в PHP4 і призначена винятково для роботи з масивами.
Синтаксис:
foreach ($array as $value) {блок_виконання}або
foreach ($array as $key => $value) {блок_виконання}У першому випадку формується цикл по всіх елементах масиву, заданого змінною $array. На кожному кроці циклу значення поточного елемента масиву записується в змінну $value, і внутрішній лічильник масиву пересувається на одиницю (так що на наступному кроці буде видно наступний елемент масиву). Всередині блоку_виконання значення поточного елемента масиву може бути отримане за допомогою змінної $value. Виконання блоку_виконання відбувається стільки разів, скільки елементів у масиві $array.
Друга форма запису на додаток до перерахованого вище на кожному кроці циклу записує ключ поточного елемента масиву в змінну $key, що теж можна використовувати в блоці_виконання.
Коли foreach починає виконання, внутрішній покажчик масиву автоматично встановлюється на перший елемент.
<?php$names = array("Іван","Петро","Семен");foreach ($names as $val) { echo "Привіт, $val <br>"; // виведе усім вітання }foreach ($names as $k => $val) { // крім вітання, // виведемо номера в списку, тобто ключі echo "Привіт, $val! Ти в списку під номером $k <br>"; }?>7.3. Оператори передачі керування | <вверх> |
Іноді у випадку особливих обставин потрібно негайно завершити роботу циклу і передати керування першої інструкції програми, розташованої за останньою інструкцією циклу. Для цього використовують оператори break і continue.
|
|
Break
Оператор break закінчує виконання поточного циклу, чи то for, foreach, while, do..while або switch. break може використовуватися з числовим аргументом, що дає вказівку, роботу скількох керуючих структур, що містять його, потрібно завершити.
<?php$i=1;while ($i) { $n = rand(1,10); // генеруємо довільне число від 1 до 10 echo "$і:$n "; // виводимо номер ітерації і згенероване число if ($n==5) break; /* Якщо було згенеровано число 5, то припиняємо роботу циклу. У цьому випадкуусе, що знаходиться після цього рядкау середині циклу, не буде виконане */ echo "Цикл працює <br>"; $і++;}echo "<br>Число ітерацій циклу $i ";?>Результатом роботи цього скрипта буде приблизно наступне:
1:7 Цикл працює 2:2 Цикл працює 3:5 Число ітерацій циклу 3