Как сделать рекурсивный обход массива php

Ответы
Аватар пользователя Roman Ashikov
Roman Ashikov
17 марта 2022

Для этого можно использовать встроенную функцию array_walk_recursive(). Первым параметром она принимает массив, а вторым колбек, который будет выполнен на каждом элементе массива. Колбек же, в свою очередь, принимает два параметра: элемент и его ключ. Ниже небольшой пример с распечаткой элементов вложенного массива на экран.

<?php

$collection = [
    'root' => [
        'key1' => 'value1',
        'key2' => 'value2',
        'key3' => [
            'key4' => 'value4'
        ] 
    ]
];

array_walk_recursive($collection, function ($value, $key) {
    var_dump("{$key} -> {$value}");
});

// => string(14) "key1 -> value1"
// => string(14) "key2 -> value2"
// => string(14) "key4 -> value4"

Стоит сказать, что если значение ключа содержит массив, то этот ключ не передаётся в колбек. Потому мы и не видим в выводе ключей root и key3.

Добавьте ваш ответ

Рекомендуемые курсы

предметная область
Active Record
модели и связи
query builder
10 часов
Посмотреть
пространства имен
импорты
ссылки
включения файлов
52 часа
Посмотреть
утверждения
PHPUnit
юнит-тесты
покрытие кода
13 часов
Посмотреть