Многомерные массивы в PHP и работа с элементами массива

Многомерные массивы в 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 будут всегда, это неотъемлемая часть программирования и манипуляции с данными.