Прийоми роботи з прапорами на PHP, Трепачов Дмитро
Підручник PHP
Робота з htaccess
Файли, папки
Сесії та кукі
Робота з БД
Практика по роботі з БД у PHP
Перед читанням див. нові уроки розділу "Важливе", які з'явилися вище.
Двигун PHP
Просунуті БД
Аутентифікація
Введення в ОВП
Абстрактні класи та інтерфейси
Практика: класи як набір методів
- Урок № нову вкладку з new.code.mu . текст, код Практика: клас ArrayConvertor
- Урок № нову вкладку з new.code.mu . текст, код Практика: клас TagHelper
- Урок № нову вкладку з new.code.mu . текст, код Практика: клас FormHelper
- Урок № нову вкладку з new.code.mu . текст, код Практика: клас TableHelper
- Урок № нову вкладку з new.code.mu . текст, код Практика: клас SessionShell
- Урок № нову вкладку з new.code.mu . текст, код Практика: клас CookieShell
- Урок № нову вкладку з new.code.mu . текст, код Практика: клас FileManipulator
- Урок № нову вкладку з new.code.mu . текст, код Практика: клас databaseShell TODO cart кошик flash шаблонизатор роутер контролер кеш логі фалідатор
Далі ще буде
- . щодо ООП ще багато уроків буде, дописую
Зараз ми з вами навчимося працювати з прапорами. Прапор - це спеціальна змінна, яка може приймати лише два значення: true та false. За допомогою прапорів можна вирішувати завдання, що перевіряють відсутність чогось: наприклад, можна перевірити, що в масиві немає елемента з певним значенням. Давайте приступимо.
Давайте розв'яжемо наступне завдання: дано масив, потрібно перевірити, чи є в ньому елемент зі значенням 'c' чи ні. Якщо є -виведемо "є", якщо ні - виведемо "ні".
Для початку давайте спробуємо вивести "є". Для цього переберемо всі елементи нашого масиву і іфом будемо запитувати - чи поточний елемент дорівнює значенню 'c'. Якщо дорівнює - виведемо 'є':
Але наше рішення не дуже добре: адже якщо в масиві буде не одне значення c, а кілька, то echo виведеться кілька разів. Давайте виправимо наш масив (зробимо два елементи з 'c') і переконаємось у цьому:
Виправимо проблему: обірвемо цикл за допомогоюbreak, якщо елемент вже знайдено:
Давайте спробуємо зробити так, щоб, якщо в масиві взагалі немає елементів зі значенням 'c', виводилося 'ні'. Поширеною помилкою буде додатиelseдо нашого іфу - у цьому випадку 'ні' буде виводитися на всі елементи, що не є 'c':
Отже, ідея додати else – погана ідея, не робоча. Для вирішення завдань подібного типу (такі завдання зустрічаються досить часто) використовують так звані прапори.
Прапор- це така змінна, яка може приймати два значення: true або false. Як працювати з прапорами – подивимося на прикладі нашого завдання.
Отже, зробимо зміннуflagз таким значенням: якщо вона дорівнює true - то в масиві є елемент 'c', а якщо false - то такого елемента немає.
Спочатку поставимо зміннуflagзначення false - тобто вважатимемо, що елемента 'c' в масиві немає:
Потім запустимо цикл з іфом так, як ми це робили раніше. Якщо цикл виявить, що в масиві є елемент 'c' - то поставимо зміннуflagзначення true (і вийдемо з циклу за допомогою break).
Далі: у відповідь питання, якщо у масиві 'c' чи ні, ми можемо дати тільки після циклу. І ця відповідь у нас вже є: після циклу зміннаflagмогла залишитися false або могла змінити своє значення на true, якщо цикл виявив у масиві 'c':
Тепер після циклу ми можемо зробити іф, який подивиться на змінну $flag і виведе на екран 'є' або 'ні':
У такий спосіб і працюють прапори. Запам'ятайте цей прийом – він обов'язково зустрінеться вам надалі, причому неодноразово.
Прапори у функції
Коли ми працюємо з функціями користувача - прапори теж можна і потрібно використовувати, але робота з ними спрощується. Давайте вирішимо те саме завдання на 'c', але таким чином: необхідно створити функціюhasElem, яка параметром прийматиме масив і повертатиме true, якщо 'c' є в масиві, і false - якщо ні:
Давайте реалізуємо функціюhasElem. У цьому випадку змінна flag і команда break нам не знадобиться – замість них все зробить команда return.
Як це буде: всередині функції запускаємо наш цикл з ІФом і, якщо ми потрапили в ІФ - робимоreturn true, тим самим виходячи з циклу та з функції. А якщо цикл прокрутився, але виходу з функції не сталося – після циклу робимоreturn false:
Ще раз як це працює: якщо в масиві знайдеться елемент зі значенням c - ми вийдемо з функції за допомогою return. Але якщо в масиві не знайдеться елемент 'c' - виходу з функції не відбудеться і виконання дійде команди return false. І вийде, що функція поверне false на знак того, що елемент c не знайдений в масиві.
Що вам робити далі:
Починайте розв'язання задач за наступним посиланням: завдання до уроку.
Коли все вирішите – переходьте до вивчення нової теми.