Уроки PHP – Масиви (Array)
У цьому уроці ми розглянемо, що таке масиви в PHP і як з ними працювати. Ви дізнаєтеся, як створювати, сортувати або показувати вміст масива. Розглянемо асоціативні та багатовимірні масиви. Також приділимо трохи уваги основним функціям при роботі з масивами в PHP.
Масиви в PHP – основи
Масиви – це спеціальні типи даних. На відміну від інших простих змінних, масив може зберігати більше одного значення. Припустимо, що вам потрібно зберегти основні кольори в своєму PHP-скрипті:
Основні кольори:
- білий
- чорний
- зелений
- червоний
- синій
Досить складно, нудно та незручно зберігати кожен колір в окремій змінній. Було б дуже добре мати більш зручний інструмент для цього. І тут в гру вступає масив (array
).
Тип даних масив існує саме для таких цілей. Отже, давайте подивимося, як створити масив, в якому буде зберігатися список основних кольорів.
Створення масиву
Створити масив в PHP можна різними способами. Можливо, найпростіший спосіб створити масив виглядає так:
<?php $colorList = array("білий", "чорний", "зелений", "синій", "червоний"); ?>
Інше рішення полягає в тому, щоб ініціалізувати елементи масиву один за другим наступним чином:
<?php $colorList[0] = "білий"; $colorList[1] = "чорний"; $colorList[2] = "зелений"; $colorList[3] = "синій"; $colorList[4] = "червоний"; ?>
Якщо ви не хочете турбуватися про нумерацію елементів масиву, ви можете створити масив і таким чином:
<?php $colorList[] = "білий"; $colorList[] = "чорний"; $colorList[] = "зелений"; $colorList[] = "синій"; $colorList[] = "червоний"; ?>
Як ви можете бачити, цей масив майже аналогічний попередньому, але тут ми не вказували нумерацію елементів в квадратних дужках. В цьому випадку PHP сам виконає внутрішню нумерацію від 0 до 4. Буде використовуватися так звана функція автоінкрементних ключів.
Відображення вмісту масиву
Отже, ми створили масив, але як тепер використовувати дані цього масиву? Наприклад, як відобразити елементи? Є кілька способів зробити це.
Якщо ви хочете показати лише один елемент масиву, ви можете використовувати наступний код:
<?php echo $colorList[0]; ?>
Цей код виведе на екран текст «білий» (саме цей колір має індекс 0
в масиві).
Ви також можете відобразити всі елементи в масиві. Для цього можна використовувати цикл for
:
<?php for ($i=0; $i<=4; $i++){ echo $colorList[$i]; } ?>
Це досить легко, проте не є найкращим рішенням, оскільки кількість елементів жорстко закодована. Існує набагато кращий спосіб відображення всіх елементів масиву. Для цього можна використовувати цикл foreach
:
<?php foreach ($colorList as $value) { echo $value; } ?>
Якщо ви хочете відображати вміст масиву з метою налагодження, ви можете використовувати 2 вбудовані функції PHP: print_r
і var_dump
. Ці функції відображають масив у вигляді пар ключ=>значення (key=>value
). Функція var_dump
також відображає інформацію змінних. Ви можете використовувати ці функції наступним чином:
<?php print_r($colorList); // або var_dump($colorList); ?>
Асоціативні масиви
Грубо кажучи, масиви в PHP – це карти, в яких зроблена прив’язка значень та ключів. У нашому прикладі це означає, що ключ рівний 0 має значення «білий», а ключ рівний 1 має значення «чорний». Однак є можливість використовувати більш значущі (зрозумілі) ключі. Асоціативний масив означає, що ви можете призначити довільний ключ кожному значенню. Асоціативні масиви іноді називають словниками. Наш масив colorList
може бути визначений як асоціативний масив таким чином:
<?php $colorList = array( "яблоко" => "червоний", "трава" => "зелений", "небо" => "синій", "ніч" => "чорний", "стіна" => "білий" ); ?>
Ви повинні пам’ятати, що ключі масиву чутливі до регістру, але нечутливі до типу. Це означає, що «а» відрізняється від «А», але «1» — це те саме, що й 1.
Таким чином, наведений вище масив може бути визначений (створений) у такий спосіб:
<?php $colorList["яблоко"] = "червоний"; $colorList["трава"] = "зелений"; $colorList["небо"] = "синій"; $colorList["ніч"] = "чорний"; $colorList["стіна"] = "білий"; ?>
І ви можете відображати вміст асоціативного масиву, як і в звичайному, але тут вам потрібно використовувати строкове значення замість числа.
<?php echo "Колір неба - ".$colorList["небо"] .", а колір трави - ".$colorList["трава"]; ?>
Ви можете змішувати масив і використовувати числа і рядки в одному списку наступним чином:
<?php $colorList["яблоко"] = "червоний"; $colorList[3] = "зелений"; $colorList["небо"] = "синій"; $colorList["ніч"] = "чорний"; $colorList[7] = "білий"; ?>
Як ви можете бачити, навіть числа можуть бути будь-якими, тому вам не обов’язково писати їх в порядку зростання. Однак слід обережно використовувати змішані масиви, так як це може призвести до помилок.
Багатовимірні масиви
Оскільки кожне значення елемента масиву може бути будь-якого типу, це означає, що цей елемент також може бути й іншим масивом. Якщо значенням елемента масиву є інший масив, тоді це багатовимірний масив. Значення вкладеного масиву також можуть бути масивами і так далі. Ви можете визначити 10-мірний (або більше) масив, якщо потрібно.
Створити багатовимірний масив так само просто, як і звичайний масив. Давайте подивимося на приклад:
<?php $myLists['кольори'] = array( "яблоко" => "червоний", "трава" => "зелений", "небо" => "синій", "ніч" => "чорний", "стіна" => "білий" ); $myLists['автомобілі'] = array( "BMW" => "Z4", "Mercedes" => "S-Class", "Lexus" => "GS F", "Mazda" => "MX-5 Miata", "Toyota" => "Yaris" ); ?>
Для доступу та відображення елемента в багатовимірному масиві ви просто вказуєте список ключів наступним чином:
<?php echo $myLists['автомобілі']['Toyota']; // Yaris ?>
Таким чином ви можете визначати нормальні, змішані та асоціативні багатовимірні масиви.
Функції масиву
Під час програмування може виникнути необхідність маніпулювання масивами. Для цього в PHP є кілька корисних вбудованих функцій.
Потрібно отримати довжину масиву або, іншими словами, дізнатися скільки елементів міститься в масиві? Щоб отримати цю інформацію ви можете використовувати функцію sizeof
. Вона показує числове значення кількості елементів в масиві. Ви можете використовувати її так:
<?php echo sizeof($colorList); ?>
Як видалити елемент з масиву? В цьому випадку ви можете використовувати функцію unset
наступним чином:
<?php unset($colorList["небо"]); ?>
Як перевірити, що в масиві міститься запитуваний елемент? Використовуйте функцію isset
наступним чином:
<?php if (isset($colorList["трава"])) echo "OK"; ?>
І останнє, іноді потрібно впорядкувати вміст масиву, наприклад, в алфавітному порядку. Для цього у вас є кілька способів, які вбудовані в PHP. Найбільш відомими функціями є sort
і asort
. Різниця між ними полягає в тому, що sort
перенумеровує ключі, тому ви втратите значення цих ключів. Тому, якщо вам потрібні імена ключів (асоціативні масиви), використовуйте функцію asort
.
Використовуйте ці функції наступним чином:
<?php sort($colorList); asort($colorList); ?>
Обидві функції сортують значення в порядку зростання. Якщо вам потрібне сортування елементів масиву за зменшенням, тоді використовуйте функції rsort
і arsort
, відповідно.