PHP Керівні структури

Автор:Артем'єв Сергій Ігорович
ICQ:438856621
email:[email protected]

Всі скрипти в PHP є набір різних виразів, які виконуються послідовно. Вирази можна поєднувати в групи виразів за допомогою т.зв. "операторних дужок" "". Групи виразів використовуються переважно разом з керуючими конструкціями мови PHP.

Керуючі конструкції мови – це набори службових слів, що дозволяють змінювати хід виконання скрипту. Всі конструкції можна умовно розділити на конструкції бінарного вибору, множинного вибору, повторення та включення.

Конструкції бінарного (двоїстого) виборудозволяють залежно від умови виконати або першу, або другу дію. У PHP ці конструкції представлені ключовими словами if, else, elseif та endif.

Конструкція if дозволяє виконати якусь дію, якщо умова є істинною. Цей приклад читається як "ЯКЩО умова істинно ТО виконати вирази".

Конструкція else використовується спільно з if і визначає дію, коли умова помилкова. Нижченаведений приклад читається як "ЯКЩО умова істинно ТО виконати вирази-1 Інакше виконати вирази-2".

Конструкція elseif аналогічна else, але дозволяє створювати ланцюжки умов та дій. Наведений нижче приклад читається як "якщо умова-1 істинно ТО виконати вирази-1 Інакше якщо умова-2 істинно ТО виконати вирази-2 інакше.".

Якою з форм користуватися - кожен розробник вирішує для себе сам, але більшість все ж таки дотримується стандартної форми запису (тобто з нормальними операторними дужками "")

Конструкція множинного виборує компактною формою записудовгих ланцюжків умов виду "if. elseif. elseif. else". У PHP така конструкція має назву switch і має досить просту форму запису:

Тобто. ми вказуємо змінну або вираз, після чого вказуємо можливі значення та дії, що відповідають цим значенням. Усі значення, які ми явно не вказали, потраплять до блоку "default". Чудова особливість switch – можливість вказувати список виразів одночасно для кількох варіантів. Для цього кілька блоків "case" записуються послідовно, наприклад:

Switch дуже зручний, коли значення набувають конкретних фіксованих значень. Наприклад, дії водія на світлофорі можна записати так:

Конструкції повторення (організації циклів)призначені для багаторазового виконання тих самих виразів. До цих конструкцій відносяться while, do-while, for і foreach.

While ("уайл") та do-while ("ду-уайл") призначені для організації циклів у випадках, коли кількість повторень заздалегідь невідома або може змінитися у процесі виконання циклу. Основою цих конструкцій є логічний вираз (умова), а цикл повторюється доти, доки умова істинна (рівно TRUE).

Формальний запис конструкцій виглядає так:

Головна відмінність while від do-while у тому, що do-while завжди виконується хоча б один раз, навіть якщо умова спочатку помилкова. Наприклад:

З прикладу видно, що користуватися циклом do-while потрібно акуратно, інакше є великий ризик отримати несподівані та парадоксальні результати, такі як наш приклад. Неправильне застосування циклів дуже часто призводить до повелення логічних помилок, які на порядок складніше виявити та локалізувати, ніж усі інші.

Конструкції while та do-while дуже зручно використовувати при посрочковому читанніз файлу чи обробці результатів запитів до баз даних, т.к. Наперед невідомо, скільки разів потрібно буде виконати необхідний набір виразів.

Наступна конструкція – for ("фор"). Ця конструкція передбачає, що кількість ітерацій циклу заздалегідь відома або обчислювана до початку циклу. Формально for записується так:

Блок "змінна" визначає змінну-лічильник та її початкове значення, "умова" визначає кількість ітерацій, а "оператор" - дія над змінною-лічильником ПІСЛЯ кожної ітерації. Наприклад, якщо вам треба вивести 10 разів один і той же рядок, можна скористатися таким кодом:

Тут ми вказали, що $i - це змінна лічильник, рахувати починаємо з нуля, після кожної ітерації беремо до уваги $i на одиницю, продовжуємо ітерації поки $i менше 10. Наведений код циклу функціонально еквівалентний наступному (записаному без циклу):

Для циклу для зовсім не обов'язково знати кількість ітерацій на етапі написання скрипта. Головне - ми маємо зуміти обчислити цю кількість і передати до циклу. Наприклад:

Остання конструкція циклів - foreach. Це найпростіша і своєрідна конструкція з розглянутих. Записується вона так:

Тут "масив" - змінна типу array, створена раніше, а "формат_елемента" - це формальний опис одного елемента масиву. Розглянемо на прикладах:

Цикл foreach перебирає всі елементи масиву, незалежно від кількості. Недолік цієї конструкції – неможливість модифікації елементів масиву під час ітерації. Пов'язано це з тим, що передпочатком циклу створюється копія масиву, яка знищується після закінчення циклу. Отже всі зміни при виході з циклу губляться. Цей недолік був виправлений у PHP версії 5 і вище за рахунок додавання посилання на елементданих:

Спеціально для управління виконанням циклів та скриптів у PHP існує кілька ключових слів: break, continue та return.

break застосовується всередині циклів і служить для негайного припинення ітерацій циклу. Управління передається наступне після циклу вираз. Наприклад, можна перервати цикл при виникненні певних умов:

break дуже корисний у разі пошуку необхідного елемента масиву, т.к. можна зупинити пошук відразу після знаходження потрібного елемента і не лопатити свідомо порожній залишок масиву.

Наступне ключове слово – continue. Призначений для негайного переходу до наступної ітерації. Наприклад, можна перетворити попередній приклад так:

Такий цикл перебере всі елементи масиву і виконає код "echo" тільки для тих елементів, де значення дорівнює "Олександр". Таку побудову циклу зручно застосовувати для випадків, коли вирази мають бути застосовані до кількох елементів масиву.

Остання група конструкцій – конструкції включення. Вони призначені для включення в текст скрипту будь-яких даних та коду, що знаходяться в іншому файлі. Усього існує чотири варіанти: include, include_once, require, require_once.

Конструкції з приставкою "_once" відрізняються від інших тим, що гарантують одноразове включення файлу в рамках всіх файлів. Тобто. якщо у вас є 10 файлів і в кожному необхідно підключити файл з описом, наприклад, класу, то при використанні звичайних require або include PHP видасть помилку "неприпустимо повторне оголошення класу" вже на другій команді включення, що зустрілася. З іншого боку, include_once або require_once попередньо перевірять попередні включення, і якщо файл вже було підключено - повторно підключати його не будуть.

Відмінністьміж include та require укладено у поведінці при відсутньому файлі для підключення. Якщо include або inclide_once не знаходять вказаний файл, видають попередження для користувача. А ось require та require_once генерують помилку і припиняють подальше виконання скрипту.

Формат усіх чотирьох конструкцій практично однаковий. Імена файлів, що підключаються, можна записувати як у повній, так і скороченій формі.

На початок сторінки

На початок сторінки