- Массивы в PHP: что это и как с ними работать на примерах
- Зачем они нужны
- Типы массивов: численно-индексированный, ассоциативный, многомерный
- Численно-индексированный массив
- Пример
- Ассоциативные массивы
- Пример
- Многомерный массив
- Пример
- Как создать массив в PHP
- Численно-индексированные
- Ассоциативные
- Многомерные
- Двумерные массивы
- Ассоциативные массивы в PHP с примерами
- Зачем нужны массивы
- Как создать массив в PHP
- Нумерация в массивах
- Ассоциативные массивы в PHP
- Как вывести массив
- Получение данных через $_GET
- Получение массива из базы MySQL
- Разбираем код
- Упражнения с массивами на PHP
Массивы в PHP: что это и как с ними работать на примерах
Массив в PHP (от англ. Array) — это глобальный объект для хранения набора данных упорядоченным образом. Такой упорядоченный список элементов всегда имеет собственный ключ — он называется индексом, а каждое значение в такой коллекции данных — называется элементом.
Простыми словами, массив в PHP — это набор определённых данных, объединенный под каким-либо названием (другими словами, несколько элементов в пределах одной переменной).
Зачем они нужны
Массив — это такая структура данных, которая хранит одно или несколько однотипных значений в одном объекте. Например: вам требуется хранить 500 чисел. И вместо того, чтобы определять 500 переменных напрямую, достаточно определить массив длиной 500.
И подобные объекты-массивы (array) есть практически во всех популярных языках программирования. По сути — это набор значений однотипных переменных, объединенных общим названием и сгруппированных в зоне распределения.
Сложно? Тогда, представьте список продуктов. Допустим, нам нужно купить:
В массиве эти продукты могут выглядеть следующим образом:
$groceries[0] = "Oranges"; $groceries[1] = "Cheese"; $groceries[2] = "Olives";
$groceries = array('Oranges','Cheese','Olives');
Почему массив — это удобно и красиво? Всё просто: он содержит в себе весь список объектов. Можно быстро добавить или удалить объект из списка, например.
Массив в PHP — не просто метод хранения данных. Скорее — это способ их организации.
Благодаря таким объектам вы можете создать простейшую базу данных и в дальнейшем управлять её содержимым. И обучение работе с массивами — одна из первых задач, с которыми вы столкнетесь, став программистом на PHP.
Типы массивов: численно-индексированный, ассоциативный, многомерный
Существует три разных типа таких объектов.
Запомнить: доступ к каждому значению массива осуществляется с помощью идентификатора, который называется индексом массива.
- Численно-индексированный. Это массив с числовым индексом. Доступ к значениям происходит линейно (другими словами, порядок индексов — линейный).
- Ассоциативный. Массив со строками в качестве индекса. Элементы находятся в соответствии со значениями ключей (а не в линейном порядке, как в случае с численно-индексированным типом массива).
- Многомерный. Массив, содержащий один или несколько массивов, доступ к значениям которых осуществляется с помощью нескольких индексов.
Разберём каждый из этих типов подробнее.
Численно-индексированный массив
Элементы массива адресуются индексами (числами). Такой массив может хранить любые данные, например: числа, строки, иные объекты.
Метод 1: согласно синтаксису:
Метод 2: путем прямого присвоения значений (с использованием индекса).
Обратите внимание: доступ к элементам массива осуществляется по их индексу.
Запомнить: индекс всегда начинается с 0.
Пример
Ассоциативные массивы
Элементы в этом типе представлены строковым идентификатором индекса. Этот идентификатор и применяется для доступа к элементам (вместо индекса). Например, вот так:
arrayname = array( "identifier1" => value2, "identifier2" => value2);
Пример
"45", "Boris"=>"47", "Joanna"=>"53"); echo "Pavel is " . $age['Pavel'] . " years old."; ?>
Многомерный массив
Многомерный тип хранит другие массивы по каждому индексу в качестве элемента. Другими словами, многомерные массивы можно представить как «массив массивов».
$mainarrayname = array( "subarrayname1" => array(elements), "subarrayname2" => array(elements) );
Пример
$ages=array( "dev1" => array("a1"=>1,"a2"=>2,"a3"=>3), "com1" => array("h1"=>45,"h2"=>65,"h3"=>35), "man1" => array("m1"=>22,"m2"=>44,"m3"=>5) );
echo $ages["com1"]["h2"]; prints 65
Как создать массив в PHP
В PHP для создания массива используется одноименная функция:
Но все не так просто. Давайте посмотрим на особенности создания каждого вида массива. Начнём с численно-индексированного.
Численно-индексированные
Существует два вида численно-индексированных массивов по типу присвоения индекса:
1. Автоматическое присвоение. Пример:
$animals = array("Cat", "Dog", "Mouse");
(помните: индекс всегда начинается с 0).
2. Ручное присвоение. Пример:
$cars[0] = "Cat"; $cars[1] = "Dog"; $cars[2] = "Mouse";
Ассоциативные
Напомним: это массивы, использующие «именованные» ключи, которые им присваивают (со строками-индексами).
Существует два способа создания ассоциативного массива:
$age = array("Papa"=>"45", "Baba"=>"77", "Mama"=>"53");
2 способ — более наглядный для объемных списков:
$age['Papa'] = "45"; $age['Baba'] = "77"; $age['Mama'] = "53".
Многомерные
Напомним: это массив, содержащий один или несколько массивов.
PHP поддерживает многомерные массивы глубиной в два / три / четыре / пять и более уровней. Но начинающим лучше воздержаться от работы с объектами глубже 3-х уровней.
Размерность указывает на количество индексов, необходимых для выбора элемента. Например:
- Для выбора элемента двумерного массива нужно два индекса.
- Для трехмерного — три индекса.
- И так далее.
Двумерные массивы
Двумерный массив — это массив массивов. Трехмерный массив будет массив массивов массивов. И так далее.
Представим что у нас есть какие-нибудь данные, например, разные предметы одежды. Для удобства определим их в таблицу:
В наличии (in stock)
Продано (sold)
Ассоциативные массивы в PHP с примерами
Массивы — способ хранить много похожей информации в одном месте.
Массив проще всего представить как много подписанных коробок при переезде. В каждой коробке может лежать что угодно, например, числа, строки, объекты или даже другие коробки.
Зачем нужны массивы
В массивах хранится информация — например, о том, что лежит в каждой коробке. В коробки можно заглянуть, используя индекс элемента — номер коробки.
Каждая коробка — элемент массива, номер под ней — индекс. То, что лежит внутри коробки — значение элемента.
Как создать массив в PHP
Чтобы создать массив в PHP напишем так:
Теперь есть два способа туда что-то добавить. Если мы знаем, на какое место в массиве вставить элемент, используем индекс.
$my_array[1] = "Кухня" $my_array[2] = "Спальня"
Если мы не знаем конкретные индексы или просто хотим добавить элементы в массив по порядку, нужна такая запись:
$my_array[] = "Кухня" $my_array[] = "Спальня"
Нумерация в массивах
По умолчанию счёт элементов массива идёт от нуля. То есть при обращении к коробкам нужно помнить, что у первой номер ноль, у второй — 1, и так далее.
Здесь у второго элемента массива номер 1, а значение — 2
Но массиву можно задать любую нумерацию. Допустим, мы хотим записать в массив значения степеней двойки.
$a[2] = 4; $a[4] = 16; $a[7] = 128; var_dump($a);
Этот код создаст массив из трёх элементов, с номерами 2, 4 и 7. Это легко проверить, если запустить его:
array(3) < [2]=>int(4) [4]=> int(16) [7]=> int(128) >
Ассоциативные массивы в PHP
Это такие же массивы, только у них индекс не число, а строка. Или что угодно ещё. Неудобно подписывать коробки при переезде по номерам — но если написать «Кухня», «Спальня» или «Гостиная», то сразу будет понятно, где что.
Индекс в таком случае называется ключом — можно представить, что коробка закрыта на замок, а знание ключа поможет её открыть.
Возьмём кухонную коробку, в которой лежат ложки, ножи и тарелки. Можно собрать её двумя способами. Так:
$kitchen = array("Spoons"=>"35", "Knifes"=>"3", "Plates"=>"12");
$kitchen['Spoons'] = "35"; $kitchen['Knifes'] = "3"; $kitchen['Plates'] = "12";
Тогда если нам нужно будет понять, сколько тарелок лежит в коробке, воспользуемся кодом $kitchen[‘Plates’]; .
Как вывести массив
Чтобы вывести всё содержимое ассоциативного массива (в нашем случае, кухонной коробки), воспользуемся циклом foreach , который перебирает все элементы внутри массива.
foreach($kitchen as $item => $item_count) < echo "Item=" . $item . ", Value text language-text">
А это код страницы foo.php на PHP, который выведет данные формы, полученные через POST . Здесь мы используем те самые значения атрибутов name , чтобы получить данные из соответствующих полей.
То есть username , email и feedback — ключи, которые не отличаются от атрибута name в форме.
Получение данных через $_GET
Это такая же форма, как выше. Разница в method="get" — и чуть позже расскажу, в чём ещё.
Код для получения значений формы через $_GET очень похож на прошлый — нужно заменить POST на GET .
Значительная разница в том, что при загрузке страницы с таким кодом, в адресе страницы появятся данные из формы.
С получением данных через GET и POST можно поэкспериментировать в первой главе курса «Знакомство с PHP».
Получение массива из базы MySQL
Ещё один частый случай использования ассоциативных массивов — при загрузке данных из базы данных. И если мы храним большую таблицу в базе, то может быть неудобно назначать столбцам номера. А вот чтобы у каждого элемента ключом стал заголовок — хорошая практика, так и запоминать будет удобнее.
Допустим, у нас есть база данных в MySQL, мы подключаемся к ней, делаем запрос и получаем список пользователей.
$dbc = mysqli_connect('localhost', 'root', 'password', 'my_users'); $query = "SELECT first_name FROM members"; $result = mysqli_query($dbc, $query); $data_array = array(); while ($row = mysqli_fetch_assoc($result))
Разбираем код
$dbc = mysqli_connect('localhost', 'root', 'password', 'my_users');
Подключаемся к базе MySQL my_users по адресу localhost , от имени пользователя root , с паролем password .
$query = "SELECT phone FROM members";
Запрос — получить номера телефонов всех пользователей из таблицы members .
$result = mysqli_query($dbc, $query);
Делаем запрос к базе с помощью существующей в PHP функции mysqli_query .
Заводим пустой массив для полученных данных.
while ($row = mysqli_fetch_assoc($result))
В этой строчке начинаем построчно считывать результаты.
$data_array[$row['name']] = $row['value'];
И если результаты есть, записываем их в ассоциативный массив.
Упражнения с массивами на PHP
Попробуйте тренажёр, где можно без установки PHP, прямо в браузере написать код для реального сайта. И заодно разобраться с массивами, циклами и тем, как работает вся эта магия.
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.