Масив - це ще один тип даних, на кшталт числа або рядка. Головна відмінність масиву від інших типів даних полягає в його здатності зберігати у змінній більше одного значення. У попередніх прикладах ім'я змінної завжди асоціювалося тільки з одним значенням:
$name = "Інокентій"
$age = 42
А якщо ми хочемо дізнатися не тільки стать, ім'я та вік користувача, а й, припустимо, улюблені серіали? Дуже непросто назвати один найулюбленіший серіал, а ось згадати кілька - набагато легше. Збереження у змінну-масив кількох значень має такий вигляд:
$fav_shows = [
"game of thrones",
"american horror story",
"walking dead"
];
У цьому прикладі ми зберегли у змінній $fav_shows відразу три значення. Але зберегти ці дані - це тільки половина справи. Як з ними потім працювати? Уже знайомий вам спосіб виведення змінної на екран не працюватиме з масивами:
<?php
print("Мои любимые сериалы: " . $fav_shows);?>
Так побачити список улюблених серіалів не вийде. Річ у тім, що масив - це не звичайна змінна. Масив зберігає не прості типи, на кшталт тексту або чисел (їх ще називають "скалярними типами"), а складнішу структуру даних, тому тут потрібен особливий підхід.
Усередині масиву в кожного значення є адреса, за якою до нього можна звернутися. Така адреса називається індексом. Індекс - це просто порядковий номер значення всередині масиву. Індексація починається з нуля, тож перший елемент отримує індекс - 0, другий - 1, і так далі.
Щоб отримати певний елемент масиву, необхідно знати його індекс (ключ). Надрукуємо назви всіх серіалів із масиву через кому:
<?php
print("Мої улюблені серіали: " . $fav_shows[0] . ", " . $fav_shows[1] . ", " . $fav_shows[2]);?>
Тепер можна дати визначення масиву: Масив - це сукупність множини елементів виду "ключ: значення".
Масиви дозволяють перезаписувати наявні значення та додавати нові. Додати нове значення в масив можна так:
$fav_shows[] = "the big bang theory";
Новий елемент автоматично отримає індекс, що дорівнює максимальному індексу з наявних +1. "Теорія великого вибуху" збережеться в масиві під індексом 3.
Якщо нам перестав подобатися один із серіалів, оскільки новий сезон виявився дуже поганим або з'явився новий фаворит, значення в масиві можна замінити. Щоб викреслити старе значення і замінити його новим, потрібно присвоїти нове значення будь-якому з наявних у масиві індексів:
$fav_shows[4] = "fargo";
Для повного видалення (без заміни на інше) значення за його індексом існує функція unset:
unset($fav_shows[4]);
У попередньому розділі ми познайомилися з так званими простими масивами. Але в PHP існує і трохи складніший тип масивів - асоціативні. Асоціативні масиви відрізняються від простих тим, що замість індексів у них ключі. Якщо індекс завжди є цілим, порядковим числом, то ключ може бути будь-яким довільним рядком.
Ми вже знаємо багато чого про нашого користувача: його ім'я, вік, улюблений колір і серіали. Є тільки одна незручність: усі ці дані зараз знаходяться в різних змінних. Було б зручно зберігати всі ці дані в одному місці, і саме в таких ситуаціях допомагають асоціативні масиви.
Запис усієї інформації про користувача за допомогою асоціативного масиву:
<?php
$user = [
'age' => 42,
'name' => 'Інокентій',
'fav_shows' => [
"game of thrones",
"american horror story",
"walking dead"
]
];
Зверніть увагу: масив може містити інший масив як одне зі значень. У нашому прикладі ми помістили простий масив усередині асоціативного під ключем fav_shows.
Виведення інформації з асоціативних масивів аналогічне простим масивам. Показ усієї інформації про користувача зі змінної $user:
<?php
print("Имя: " . $user['name'] . " Возраст: " . $user['age'] . "
Любимые сериалы: " . $user['fav_shows'][0] . ", " . $user['fav_shows'][1] . ", " . $user['fav_shows'][2]);?>