Как перебрать многомерный массив с учетом динамического промежуточного ключа?
Есть массив такого формата:
Array ( [_links] => Array ( [self] => Array .......)) [_embedded] => Array ( [movement_acceptance] => Array ( [0] => Array ( [id] => 116173 [state] => confirmed ) [1] => Array ( [id] => 116172 [state] => new ) [2] => Array ( [id] => 116171 [state] => confirmed ) |
Array ( [_links] => Array ( [self] => Array .......)) [_embedded] => Array ( [movement_acceptance] => Array ( [0] => Array ( [id] => 116173 [state] => confirmed ) [1] => Array ( [id] => 116172 [state] => new ) [2] => Array ( [id] => 116171 [state] => confirmed )
Мне нужно сделать перебор значений ключа id в группе самых глубоких подмассивов. Получается что выделенный жирным массив постоянно меняется так как является по сути ключем надмассива:
$array[_embedded][movement_acceptance][*][id]
Возвращаясь к задаче - нужно сделать перебор именно значений id со всего списка. Знаю о функции foreach но примеры ее применения показывают только работу со статическими значениями ключей. Значение * может принимать от 0 до 24.
Подскажите как оформить такой перебор?
Дополнительно:
Знаю о функции foreach но примеры ее применения показывают только работу со статическими значениями ключей. Значение * может принимать от 0 до 24.
не правда, foreach - не for
$ids = []; foreach ($array['_embedded']['movement_acceptance'] as $acceptance) { $ids[] = $acceptance['id']; } var_dump($ids); |
$ids = []; foreach ($array['_embedded']['movement_acceptance'] as $acceptance) { $ids[] = $acceptance['id']; } var_dump($ids);
- Огромное спасибо!
- array_column
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для перебора многомерного массива с учетом динамического промежуточного ключа вам нужно использовать рекурсивную функцию. Рекурсия позволяет обходить все уровни вложенности массива и оперировать с ключами динамически.
Вот пример кода на PHP, который позволяет перебрать многомерный массив с учетом динамического промежуточного ключа:
function recursiveArraySearch($array, $searchKey, $dynamicKey) { foreach($array as $key => $value) { if($key === $searchKey) { // Делаем что-то с найденным значением echo $value . "<br>"; } elseif(is_array($value)) { // Рекурсивно вызываем функцию для каждого вложенного массива recursiveArraySearch($value, $searchKey, $dynamicKey); } elseif($key === $dynamicKey) { // Делаем что-то с динамическим ключом echo $value . "<br>"; } } } // Пример использования функции $array = [ 'key1' => 'value1', 'key2' => [ 'subkey1' => 'subvalue1', 'subkey2' => [ 'subsubkey1' => 'subsubvalue1', 'subsubkey2' => 'subsubvalue2' ] ], 'key3' => 'value3' ]; recursiveArraySearch($array, 'subsubkey1', 'subkey1');
В данном примере функция `recursiveArraySearch` принимает три параметра: массив для поиска, ключ для поиска и динамический ключ. Функция рекурсивно обходит массив, и если находит ключ для поиска или динамический ключ, то выполняет определенные действия с найденными значениями.
Вы можете адаптировать этот код под свои нужды, добавив необходимую логику обработки и вывода данных. Надеюсь, этот пример поможет вам решить вашу проблему с перебором многомерного массива с учетом динамического промежуточного ключа.