В одной задаче мне понадобилось писать блок  поступающего извне JSON-массива в читабельном виде, как минимум, для записи в журнал действий php-скрипта. В моем случае удобочитаемый(human readable) вид сводился к следующему представлению:

Переменная1:[пробел]Значение1

Переменная2:[пробел]Значение2

. . . . . . . . .

ПеременнаяN:[пробел]ЗначениеN

Давайте посмотрим на эту простенькую, но полезную функцию в виде листинга. 

Любой код должен иметь смысл, поэтому кратко о ключевых особенностях:

  • Рекурсия позволяет обрабатывать массивы любой глубины.
  • Отступы улучшают визуальное восприятие вложенности.
  • Запись итогового текста происходит через функцию writeLog (именно в этом примере, вы можете выводить куда угодно).
  • В результате получается легко читаемый текст, представляющий структуру исходного массива.
// Функция для преобразования JSON массива в читабельный вид
function convertArrayToHumanReadable($array, $indent = '') {
    $output = '';
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            // Рекурсивное преобразование, если значение - массив
            $output .= $indent . $key . ":\n" . convertArrayToHumanReadable($value, $indent . '  ');
        } else {
            // Иначе вывести представление как пара ключ : значение
            $output .= $indent . $key . ": " . $value . "\n";
        }
    }
    return writeLog($output.PHP_EOL); // как пример, сразу пишем в лог
}

Функция convertArrayToHumanReadable предназначена для преобразования JSON-массива (в виде PHP-массива) в удобочитаемый текстовый формат с отступами, чтобы визуально показать вложенность данных. Функция принимает два параметра:

  • $array — входной массив, который обычно получен из JSON (например, через json_decode).
  • $indent — строка отступа, по умолчанию пустая, используется для визуального сдвига вложенных элементов.
  • В начале создаётся пустая строка $output для накопления итогового текста.
  • В цикле foreach реализован алгоритм обхода ключей и значений массива:
    • Если значение $value является массивом (is_array), функция рекурсивно вызывает сама себя, передавая вложенный массив и увеличивая отступ (добавляет два пробела). При этом в $output добавляется текущий ключ и перенос строки, затем результат рекурсивного вызова — это вложенная структура с дополнительными отступами.
    • Если значение не массив, то формируется строка с ключом и значением через двоеточие, а также с текущим отступом, и добавляется перенос строки.
  • В конце функция возвращает результат вызова writeLog — предполагается, что это функция для записи текста в лог или файл. Вместе с текстом добавляется символ переноса строки, обозначая конец записи.

Этот подход особенно полезен для отладки или логирования сложных JSON-структур.

Удачного кодинга!