Вывод рекурсивной итерации в новый массив
не могу сделать вывод рекурсии в новый массив. Вот так работает, выводит текстовые строки:
function recurse($item) {
foreach ($item as $key => $value) {
if (is_array($value)) {
recurse($value);
} else {
echo "$key : $value\n";
}
}
}
Но я хочу записать пары $key => $value в новый массив с выводом последнего как $dataArray из функции таким образом, но это не работает
function recurse($item) {
$dataArray = [];
foreach ($item as $key => $value) {
if (is_array($value)) {
recurse($value);
} else {
$dataArray[$key] = $value;
}
}
return $dataArray;
}
Ответы (1 шт):
Автор решения: Laukhin Andrey
→ Ссылка
Судя по всему, мой комментарий не приблизил к решению, поэтому демонстрирую наглядно:
function recurse($item)
{
$dataArray = [];
foreach ($item as $key => $value) {
if (is_array($value)) {
$dataArray = array_merge($dataArray, recurse($value));
} else {
$dataArray[$key] = $value;
}
}
return $dataArray;
}
Есть решение в одну строчку:
$out = []; // массив с данными
array_walk_recursive($arr, function ($v, $k) use (&$out){$out[$k] = $v;});
Но учтите, что элементы с одинаковыми ключами будут перезаписываться.