Многомерные массивы в PHP и работа с элементами массива
Один из мощных и необходимых инструментов в PHP — это массивы. Как раз php массивы позволяют хранить в себе множество структурированных данных разных типов.
Сами же массивы также имеют разные типы, например, многомерные массивы php позволяют быстрее искать нужную в себе информацию по строчному ключу. А также, ранее мы рассказывали как в php получить последний элемент массива, прочитайте этот материал тоже, возможно будет полезен.
Что такое многомерный массив в PHP
В PHP многомерный массив — это массив, который в себе может содержать другие массивы, а они в свою очередь тоже другие массивы и т.д. Например, у нас есть 1 компания, которая в себе содержит 3 отдела, каждый из которых в себе содержит по 4 сотрудника. Реализация такого многомерного массива будет такая:
<?php
$company = [
"otdel_1" => [
["name" => "Иван", "email" => "ivan@example.com", "age" => 25],
["name" => "Мария", "email" => "maria@example.com", "age" => 30],
["name" => "Андрей", "email" => "andrey@example.com", "age" => 28],
],
"otdel_2" => [
["name" => "Василий", "email" => "vasya@example.com", "age" => 22],
["name" => "Сергей", "email" => "sergey@example.com", "age" => 35],
["name" => "Александр", "email" => "alex@example.com", "age" => 27],
],
"otdel_3" => [
["name" => "Евгений", "email" => "evgen@example.com", "age" => 26],
["name" => "Наталья", "email" => "natali@example.com", "age" => 38],
["name" => "Ольга", "email" => "olga@example.com", "age" => 43],
],
];
?>
В этом коде наша компания — это переменная $company которая содержит в себе многомерный массив.
Получить элемент многомерного массива в PHP
Для того чтоб получить элемент многомерного массива, нужно последовательно обратиться к ключам массива. Например, в нашей компании мы хотим получить имя и email Натальи из отдела 3.
<?php echo $company["otdel_3"][1]["name"]; // выведет: Наталья echo $company["otdel_3"][1]["email"]; // выведет: natali@example.com ?>
Изначально мы указываем на вывод саму переменную многомерного массива $company, далее, указываем ключ 1 (потому как счет идет с 0), далее указываем ключи name и email.
Добавление элементов в многомерный массив PHP
Например, мы хотим создать нового сотрудника в отделе 2. Для этого нам нужно обратится по нужному ключу в многомерный массив, и добавить еще один массив с данными.
<?php $company["otdel_2"] = ["name" => "Юлия", "email" => "yulya@example.com", "age" => 19]; ?>
Таким образом мы обозначили в многомерном массиве отдел $company[«otdel_2»] и присвоили ему новый массив с данными сотрудника.
Перебор элементов многомерного массива PHP
Сейчас мы рассмотрим как вывести всех сотрудников отдела 1 на экран, то есть, мы выведем данные многомерного массива php через цикл.
<?php
foreach($company["otdel_1"] as $user) {
echo "Имя: " . $user["name"] . "<br>";
echo "E-mail: " . $user["email"] . "<br>";
echo "Возраст: " . $user["age"] . "<hr>";
}
?>
С помощью цикла foreach(){} мы элемент многомерного массива с нашей компанией перебрали. Мы передали циклу элемент массива, в котором содержится еще один массив, который в свою очередь содержит список сотрудников. Таким образом мы увидим список сотрудников, точнее их данные.
Посчитать количество элементов многомерного массива PHP
Подсчет элементов многомерного массива ведется обычно через функцию count(). В функцию просто передается сам массив и считается количество его элементов той линии, которая была передана. Если передать определенный ключ массива, который в себе содержит другой массив, то будет подсчитано количество элементов того массива. Если же нужно подсчитать количество всех элементов, то в функцию нужно передать сам массив и вторым параметром COUNT_RECURSIVE.
echo count($company); // выведет: 3 echo count($company["otdel_1"]); // выведет: 3 echo count($company, COUNT_RECURSIVE); // выведет количество всех элементов
Удаление элементов многомерного массива PHP
Иногда появляется необходимость в удалении какого то одного элемента массива. Для этого обычно используется функция unset(). Достаточно в нее передать ключ элемента массива который нужно удалить.
unset($company["otdel_1"]);
Таким образом в нашей компании будет удален первый отдел. Возможно пойти дальше и указать конкретного сотрудника, чтоб не удалять весь отдел $company[«otdel_1»][0]. Таким образом мы просто удалим Ивана.
Итоги многомерных массивов PHP
В итоге, многомерные массивы php позволяют удобно и структурировано хранить данные и обрабатывать их. Обрабатывать данные можно как большой пачкой, так и по единственному экземпляру. Например, возможно заменить email в массиве кому то одному из пользователей.
Работа с массивами php — это базовый навык, который в будущем поможет научиться работать с объектами. А это уже прекрасное начало для умелой работы с базами данных, файлами json или xml. Многомерные массивы в php будут всегда, это неотъемлемая часть программирования и манипуляции с данными.