@eternalfire

Как ключи и значения вложенных массивов объединить в строку?

Есть массив:

$a = [
  "Один" => [
    "Два" => [
      "Три" => [ "Четыре" ]
    ]
  ]
];

Надо сделать так, чтобы при выводе получилась строка:

"Один, Два, Три, Четыре"
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
0xD34F
@0xD34F
Рекурсия. Перебираем исходный массив, если значение является массивом - сохраняем в результирующий массив ключ и преобразованное значение (рекурсивный вызов, он будет здесь, да); в противном случае сохраняем значение как оно есть. Склеиваем содержимое результирующего массива в строку, возвращаем. Вот так:

function getRecursiveStr($arr) {
  $result = [];

  foreach ($arr as $key => $val) {
    if (is_array($val)) {
      array_push($result, $key, getRecursiveStr($val));
    } else {
      $result[] = $val;
    }
  }

  return implode(', ', $result);
}

$arr = [
  "Один" => [
    "Два" => [
      "2.87" => [
        "2.88",
        "2.89"
      ],
      "Три" => [
        "Три с половиной",
        "Четыре"
      ]
    ]
  ]
];

echo getRecursiveStr($arr); // выведет "Один, Два, 2.87, 2.88, 2.89, Три, Три с половиной, Четыре"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы