Доброго дня. Проблема следующая. Имеется многомерный массив, типа PHP: $array = ["foo", [1, 345, [45.67, "bar"], 12], 36]; Необходимо через функцию вывести его в следующем виде (ключи - значение) PHP: 0 - "foo" 1>0 - 1 1>1 - 345 1>2>0 - 45.67 1>2>1 - "bar" 1>3 - 12 2 - 36 Пытался сделать через рекурсивный вызов функции в цикле foreach, но чего-либо, дающего желаемый результат не вышло.
PHP: <?php $array = ["foo", [1, 345, [45.67, "bar"], 12], 36]; function test_print($item, $key, $prefix) { if (is_array($item)) array_walk($item, 'test_print', "{$prefix}{$key}>"); else echo "{$prefix}{$key} - {$item}\n"; } array_walk($array, 'test_print', ''); --- Добавлено --- Код (Text): 0 - foo 1>0 - 1 1>1 - 345 1>2>0 - 45.67 1>2>1 - bar 1>3 - 12 2 - 36
P.S. Я не смог придумать как выразить эту же рекурсию через стрелочную анонимную функцию fn () => ... Памагити!
@artoodetoo внутри стрелочной функции доступны такие значения переменных, которые были выше по коду. Но это не относится к значениям внутри массивов и объектов. Поэтому можешь использовать $GLOBALS для доступа к стрелочной функции из неё самой.