Масиви в php це, якщо висловитися коротко, кілька змінних, об'єднаних під одну "дах".
Іншими словами - це змінна з безліччю осередків.
Все просто - реалізується це, як варіант, за допомогою квадратних дужок []
![Масиви php (масиви) масиви php](https://images-on-off.com/images/198/massiviphp-eeb9e5f2.jpg)
Що ми зробили? Ми створили масив $ user [] з п'ятьма осередками і привласнили їм різні значення.
Виникає питання - як нам звертайтеся до тієї чи іншої комірці?
Якщо вручну не поставити номери, пхп автоматично пронумерує осередки, починаючи з верху, з нуля.
Тобто наприклад, що б звернеться до верхньої осередку потрібно написати:
![Масиви php (масиви php. Цикли в php.) масиви php](https://images-on-off.com/images/198/massiviphp-129bfff8.jpg)
Існує функція, яка вважає всі осередки масиву, напрмер якщо їх там 65 568, вважати їх звичайно буде великою проблемою. Для цього і існує функція count ()
![Масиви php (масиви php. Цикли в php.) масиви php](https://images-on-off.com/images/198/massiviphp-f02d8aea.jpg)
Ще одна зручна функція, яка виводить всі значення всіх осередків масиву print_r ()
![Масиви php (масиви php. Цикли в php.) масиви php](https://images-on-off.com/images/198/massiviphp-07951444.jpg)
Результат в браузері буде виглядати так:
![Масиви php (масиви) масиви php](https://images-on-off.com/images/198/massiviphp-6ba37628.jpg)
Ми бачимо нумерацію наших осередків і їх значення. АЛЕ! Ми не бачимо якісь типи змінних у нас там лежать, правда? Також ми не бачимо кількість осередків. Ну п'ять то ми можемо порахувати, а якщо їх та тисячі?
На цей випадок у нас є чудова функція var_dump ()
Яка і кількість осередків виведе і їх типи.
![Масиви php (масиви php. Цикли в php.) масиви php](https://images-on-off.com/images/198/massiviphp-ba9a6492.jpg)
У браузері ми побачимо все, що нам потрібно!
![Масиви php (масиви php. Цикли в php.) масиви php](https://images-on-off.com/images/198/massiviphp-3a6986f0.jpg)
"А що буде якщо вручну пронумерувати комірки" - запитаєте Ви? Зробимо так "
![Масиви php (масиви php. Цикли в php.) масиви php](https://images-on-off.com/images/198/massiviphp-7bf5a4f7.jpg)
![Масиви php (масиви php. Цикли в php.) масиви php](https://images-on-off.com/images/198/massiviphp-b5ac9ec7.jpg)
Так відбувається, тому що пхп нумерує комірки, якщо частина не пронумерована, позиціями НАСТУПНОГО ЗА НАЙБІЛЬШОЮ!
Тобто він дивиться зверху вниз, ага, перша пронумерована, друга пронумерована, третя. немає, і він привласнює їй значення наступне за найбільшим, яке він вже прочитав. Найбільше було 11, значить третю він нумерує 12, так само і з 46, тому що 45 було найбільше, що він побачив перед непронумерованому осередком.
Масиви створювати можна і іншим способом (що є більш правильним) за допомогою функції array ()
Давайте створимо точно такий же масив цим способом
А пронумерувати комірки в цій ситуації можна дуже просто:
Виникає одна проблемма. Якщо осередків багато, то нам важко буде запам'ятати під яким номером, наприклад, пароль, а під яким е-мейл. Для цього ми пропишемо осередкам не номери, а дамо їм імена, тим самим ми створюємо асоціативний масив
![Масиви php (масиви) масиви php](https://images-on-off.com/images/198/massiviphp-5e4823e9.jpg)
- це вкладений масив, тобто скажімо, в масиві п'ять осередків, а в свою чергу в одній з них (або в декількох або взагалі у всіх) лежить ще один масив (і так може бути до безкінечності).
Так як же вкласти одне в інше? Все як завжди на поверхні :-)
![Масиви php (масиви) масиви php](https://images-on-off.com/images/198/massiviphp-d62e9d83.jpg)
Так ми вклали всередину нашої змінної $ name, яка сама перебуває всередині масиву $ user, ще один масив.
Просто замість значення однієї з осередків, як варіант, пишете масив. От і все. -)
Дуже часто нам потрібно виконати певний шматок коду кілька разів, але з невеликими змінами.
Погодьтеся, дуже зручно було б якось зациклити виконання однієї ділянки, ніж писати одне і те ж по кілька разів.
А вже якщо повторити код треба кілька тисяч разів, то без циклів ніяк не обійтися :-)
Дивіться слайд - там все начебто зрозуміло.
PRE - спочатку значення змінюється, потім передається далі на обробку.
POST - спочатку змінна віддається на обробку, а тільки потім змінюється.
![Масиви php (масиви) масиви php](https://images-on-off.com/images/198/massiviphp-377d084b.jpg)
![Масиви php (масиви php. Цикли в php.) масиви php](https://images-on-off.com/images/198/massiviphp-73c8aaf2.jpg)
Перші три рядки - це
Тобто спочатку відлуння виводить значення $ a рівне 1, а потім збільшує $ a на 1.
Потім коли луною $ a викликається повторно, вона вже має значення 2
Ну і другі три рядки - те ж саме, але навпаки.
![Масиви php (масиви php. Цикли в php.) масиви php](https://images-on-off.com/images/198/massiviphp-802f0e29.jpg)
В частині А просто тупо виконується то що Ви там напишете. Як правило, там инициализируется лічильник циклу, але не обов'язково! Ну наприклад ми там оголошуємо якусь змінну і говоримо - "Ця змінна буде лічильником".
У частині В перевіряється якась умова (в принципі той же, якщо хочете, If). Перевіряється істинність цієї умови і якщо там true, php заходить в тіло циклу і виконує його, якщо false - вилітаємо з циклу.
Частина С точно так само як і в частині А просто виконується будь то вираз. Знову ж як правило там ми змінюємо наш лічильник - збільшуємо або зменшуємо значення.
Отже, як все це працює, ще раз:
Пхп заходить до частини A і робить все, що там написано. Сюди він потрапляє тільки один раз.
Потім заходить в частину В і питає там true чи ні. Якщо так, то виконуються всі команди циклу.
Потім пхп піднімається в частину С і теж виконує все що там написано.
Знову йде в частину В і знову питає true там або НЕ true.
Якщо true все повторюється знову - виконує тіло, йде в С, йде в В і питає знову.
І так триває поки в частині В не виявиться False. Після чого викидає з циклу.
Давайте виконаємо завдання, що б остаточно розібратися з циклом For.
Необхідно в стовпчик вивести всі числа від 1 до 50. Виконуємо:
![Масиви php (масиви php. Цикли в php.) масиви php](https://images-on-off.com/images/198/massiviphp-ca87e466.jpg)
Спробуйте самі скласти подібний код і подивіться, що у Вас вийде :-)
Ось синтаксис циклу і приклад:
![Масиви php (масиви php. Цикли в php.) масиви php](https://images-on-off.com/images/198/massiviphp-d6373141.jpg)
Тут все те ж що в For тільки частина А ми виносимо наверх, за межі циклу, а частина С навпаки вставляємо всередину While
Зручно використовувати For коли ми точно знаємо з якого по яке значення буде крутитися цикл, а While коли точно не визначено скільки разів повторювати код в тілі.
Давайте складемо попередню задачу з використанням цього циклу:
![Масиви php (масиви) масиви php](https://images-on-off.com/images/198/massiviphp-f367cab6.jpg)
Ось і всі премудрості :-)
Бувають ситуації, коли нам не потрібно, що б цикл пройшов цілком. Тобто іноді потрібно, що б за певних умов ми вилетіли з тіла циклу.
Тому у нас є можливість гнучко впливати на роботу циклів і управляти ними :-)
Перший спосіб використання вже відомого з світча оператор break
![Масиви php (масиви php. Цикли в php.) масиви php](https://images-on-off.com/images/198/massiviphp-c9597dab.jpg)
Тобто в браузер виведеться
Тому, що ми поставили умову, що при $ i == 5 ми вилітаємо з циклу командою break
Другий варіант це використання оператора continue
![Масиви php (масиви) масиви php](https://images-on-off.com/images/198/massiviphp-ae0bd226.jpg)
Тут ми поставили умову, що б при $ i == 5 нас перекидало назад до умови циклу.
Відповідно коли php побачить відповідність $ i == 5 він перекине нас в частину В і цикл піде далі, не вивівши print $ i яка в даний момент дорівнювала п'яти. І в браузері буде:
12346789 і так далі - без п'ятірки.
Як поведе себе оператор break якщо у нас буде вкладений цикл? Наприклад є цикл while всередині котрого ще один цикл while
![Масиви php (масиви) масиви php](https://images-on-off.com/images/198/massiviphp-50220eb1.jpg)
У цій ситуації, коли пхп наткнеться на оператор break він викине нас з одного циклу - всередині якого був брейк
![Масиви php (масиви) масиви php](https://images-on-off.com/images/198/massiviphp-c7128c69.jpg)
Але залишиться в батьківському циклі - першому.
Таких вкладень може бути як завгодно багато. І щоб вказати php на скільки вкладених циклів нам необхідно вийти (скільки раз зробити брейк), ми пишемо через пробіл число, котре означає на скільки вкладень нам необхідно вийти, наприклад
![Масиви php (масиви) масиви php](https://images-on-off.com/images/198/massiviphp-aefb72e1.jpg)
Тим самим виходимо з циклів!
Те ж саме з continue
АЛЕ. Не буває зле без добра, як то кажуть :-)
Число, яке визначає на скільки рівнів ми повинні вийти, має бути не більше кількості вкладених циклу. Тобто якщо у Вас один цикл вкладений в інший і все! число не може бути більше двох - інакше це призведе у ПОМИЛКУ.
У циклів For і While є один нюанс - і той і інший можуть взагалі ніколи не розпочатися, а нам НУ ДУЖЕ потрібно хоча б одне виконання циклу в незалежності від умови, наприклад
![Масиви php (масиви php. Цикли в php.) масиви php](https://images-on-off.com/images/198/massiviphp-0d57540c.jpg)
Ці цикли ніколи не почнуть виконуватися, тому що спочатку $ i = 100 а в умови першого циклу (що б він почав виконуватися) має бути $ i