За последние 24 часа нас посетили 37966 программистов и 7865 роботов. Сейчас ищут 1718 программистов ...

Получение цепочки ключей элементов в многомерном массиве

Тема в разделе "PHP для новичков", создана пользователем da.a-ri.v, 2 янв 2024.

  1. da.a-ri.v

    da.a-ri.v Новичок

    С нами с:
    2 янв 2024
    Сообщения:
    1
    Симпатии:
    0
    Доброго дня.

    Проблема следующая.
    Имеется многомерный массив, типа
    PHP:
    1. $array = ["foo", [1, 345, [45.67, "bar"], 12], 36];
    Необходимо через функцию вывести его в следующем виде (ключи - значение)
    PHP:
    1. 0 - "foo"
    2. 1>0 - 1
    3. 1>1 - 345
    4. 1>2>0 - 45.67
    5. 1>2>1 - "bar"
    6. 1>3 - 12
    7. 2 - 36
    Пытался сделать через рекурсивный вызов функции в цикле foreach, но чего-либо, дающего желаемый результат не вышло.
     
  2. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.511
    Симпатии:
    284
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.223
    Адрес:
    там-сям
    PHP:
    1. <?php
    2.  
    3. $array = ["foo", [1, 345, [45.67, "bar"], 12], 36];
    4.  
    5. function test_print($item, $key, $prefix)
    6. {
    7.     if (is_array($item)) array_walk($item, 'test_print', "{$prefix}{$key}>");
    8.     else echo "{$prefix}{$key} - {$item}\n";
    9. }
    10.  
    11. array_walk($array, 'test_print', '');
    --- Добавлено ---
    Код (Text):
    1.  
    2. 0 - foo
    3. 1>0 - 1
    4. 1>1 - 345
    5. 1>2>0 - 45.67
    6. 1>2>1 - bar
    7. 1>3 - 12
    8. 2 - 36
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.223
    Адрес:
    там-сям
    P.S. Я не смог придумать как выразить эту же рекурсию через стрелочную анонимную функцию fn () => ...
    Памагити! :)
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.543
    Симпатии:
    623
    @artoodetoo внутри стрелочной функции доступны такие значения переменных, которые были выше по коду. Но это не относится к значениям внутри массивов и объектов. Поэтому можешь использовать $GLOBALS для доступа к стрелочной функции из неё самой.
     
    artoodetoo нравится это.