Масиви в php це, якщо висловитися коротко, кілька змінних, об'єднаних під одну "дах".
Іншими словами - це змінна з безліччю осередків.
Все просто - реалізується це, як варіант, за допомогою квадратних дужок []
Що ми зробили? Ми створили масив $ user [] з п'ятьма осередками і привласнили їм різні значення.
Виникає питання - як нам звертайтеся до тієї чи іншої комірці?
Якщо вручну не поставити номери, пхп автоматично пронумерує осередки, починаючи з верху, з нуля.
Тобто наприклад, що б звернеться до верхньої осередку потрібно написати:
Існує функція, яка вважає всі осередки масиву, напрмер якщо їх там 65 568, вважати їх звичайно буде великою проблемою. Для цього і існує функція count ()
Ще одна зручна функція, яка виводить всі значення всіх осередків масиву print_r ()
Результат в браузері буде виглядати так:
Ми бачимо нумерацію наших осередків і їх значення. АЛЕ! Ми не бачимо якісь типи змінних у нас там лежать, правда? Також ми не бачимо кількість осередків. Ну п'ять то ми можемо порахувати, а якщо їх та тисячі?
На цей випадок у нас є чудова функція var_dump ()
Яка і кількість осередків виведе і їх типи.
У браузері ми побачимо все, що нам потрібно!
"А що буде якщо вручну пронумерувати комірки" - запитаєте Ви? Зробимо так "
Так відбувається, тому що пхп нумерує комірки, якщо частина не пронумерована, позиціями НАСТУПНОГО ЗА НАЙБІЛЬШОЮ!
Тобто він дивиться зверху вниз, ага, перша пронумерована, друга пронумерована, третя. немає, і він привласнює їй значення наступне за найбільшим, яке він вже прочитав. Найбільше було 11, значить третю він нумерує 12, так само і з 46, тому що 45 було найбільше, що він побачив перед непронумерованому осередком.
Масиви створювати можна і іншим способом (що є більш правильним) за допомогою функції array ()
Давайте створимо точно такий же масив цим способом
А пронумерувати комірки в цій ситуації можна дуже просто:
Виникає одна проблемма. Якщо осередків багато, то нам важко буде запам'ятати під яким номером, наприклад, пароль, а під яким е-мейл. Для цього ми пропишемо осередкам не номери, а дамо їм імена, тим самим ми створюємо асоціативний масив
- це вкладений масив, тобто скажімо, в масиві п'ять осередків, а в свою чергу в одній з них (або в декількох або взагалі у всіх) лежить ще один масив (і так може бути до безкінечності).
Так як же вкласти одне в інше? Все як завжди на поверхні :-)
Так ми вклали всередину нашої змінної $ name, яка сама перебуває всередині масиву $ user, ще один масив.
Просто замість значення однієї з осередків, як варіант, пишете масив. От і все. -)
Дуже часто нам потрібно виконати певний шматок коду кілька разів, але з невеликими змінами.
Погодьтеся, дуже зручно було б якось зациклити виконання однієї ділянки, ніж писати одне і те ж по кілька разів.
А вже якщо повторити код треба кілька тисяч разів, то без циклів ніяк не обійтися :-)
Дивіться слайд - там все начебто зрозуміло.
PRE - спочатку значення змінюється, потім передається далі на обробку.
POST - спочатку змінна віддається на обробку, а тільки потім змінюється.
Перші три рядки - це
Тобто спочатку відлуння виводить значення $ a рівне 1, а потім збільшує $ a на 1.
Потім коли луною $ a викликається повторно, вона вже має значення 2
Ну і другі три рядки - те ж саме, але навпаки.
В частині А просто тупо виконується то що Ви там напишете. Як правило, там инициализируется лічильник циклу, але не обов'язково! Ну наприклад ми там оголошуємо якусь змінну і говоримо - "Ця змінна буде лічильником".
У частині В перевіряється якась умова (в принципі той же, якщо хочете, If). Перевіряється істинність цієї умови і якщо там true, php заходить в тіло циклу і виконує його, якщо false - вилітаємо з циклу.
Частина С точно так само як і в частині А просто виконується будь то вираз. Знову ж як правило там ми змінюємо наш лічильник - збільшуємо або зменшуємо значення.
Отже, як все це працює, ще раз:
Пхп заходить до частини A і робить все, що там написано. Сюди він потрапляє тільки один раз.
Потім заходить в частину В і питає там true чи ні. Якщо так, то виконуються всі команди циклу.
Потім пхп піднімається в частину С і теж виконує все що там написано.
Знову йде в частину В і знову питає true там або НЕ true.
Якщо true все повторюється знову - виконує тіло, йде в С, йде в В і питає знову.
І так триває поки в частині В не виявиться False. Після чого викидає з циклу.
Давайте виконаємо завдання, що б остаточно розібратися з циклом For.
Необхідно в стовпчик вивести всі числа від 1 до 50. Виконуємо:
Спробуйте самі скласти подібний код і подивіться, що у Вас вийде :-)
Ось синтаксис циклу і приклад:
Тут все те ж що в For тільки частина А ми виносимо наверх, за межі циклу, а частина С навпаки вставляємо всередину While
Зручно використовувати For коли ми точно знаємо з якого по яке значення буде крутитися цикл, а While коли точно не визначено скільки разів повторювати код в тілі.
Давайте складемо попередню задачу з використанням цього циклу:
Ось і всі премудрості :-)
Бувають ситуації, коли нам не потрібно, що б цикл пройшов цілком. Тобто іноді потрібно, що б за певних умов ми вилетіли з тіла циклу.
Тому у нас є можливість гнучко впливати на роботу циклів і управляти ними :-)
Перший спосіб використання вже відомого з світча оператор break
Тобто в браузер виведеться
Тому, що ми поставили умову, що при $ i == 5 ми вилітаємо з циклу командою break
Другий варіант це використання оператора continue
Тут ми поставили умову, що б при $ i == 5 нас перекидало назад до умови циклу.
Відповідно коли php побачить відповідність $ i == 5 він перекине нас в частину В і цикл піде далі, не вивівши print $ i яка в даний момент дорівнювала п'яти. І в браузері буде:
12346789 і так далі - без п'ятірки.
Як поведе себе оператор break якщо у нас буде вкладений цикл? Наприклад є цикл while всередині котрого ще один цикл while
У цій ситуації, коли пхп наткнеться на оператор break він викине нас з одного циклу - всередині якого був брейк
Але залишиться в батьківському циклі - першому.
Таких вкладень може бути як завгодно багато. І щоб вказати php на скільки вкладених циклів нам необхідно вийти (скільки раз зробити брейк), ми пишемо через пробіл число, котре означає на скільки вкладень нам необхідно вийти, наприклад
Тим самим виходимо з циклів!
Те ж саме з continue
АЛЕ. Не буває зле без добра, як то кажуть :-)
Число, яке визначає на скільки рівнів ми повинні вийти, має бути не більше кількості вкладених циклу. Тобто якщо у Вас один цикл вкладений в інший і все! число не може бути більше двох - інакше це призведе у ПОМИЛКУ.
У циклів For і While є один нюанс - і той і інший можуть взагалі ніколи не розпочатися, а нам НУ ДУЖЕ потрібно хоча б одне виконання циклу в незалежності від умови, наприклад
Ці цикли ніколи не почнуть виконуватися, тому що спочатку $ i = 100 а в умови першого циклу (що б він почав виконуватися) має бути $ i