Просмотр содержимого PHP массивов: инструменты и приёмы

Раздел: PHP -> Работа с массивами

Основные способы вывода массива в PHP

Основное эффективное решение: print_r с использованием тега <pre>

Функция print_r предназначена для вывода информации о переменной в читаемом виде. Для массивов она показывает ключи и значения. Чтобы вывод был отформатирован, результат оборачивается в тег <pre>.

<?php
$arr = ['fruit' => 'apple', 'color' => 'red', 'count' => 5];
echo '<pre>';
print_r($arr);
echo '</pre>';
?>

содержимое массива php (php вывод содержимого массива)

Результат:

Array
(
    [fruit] => apple
    [color] => red
    [count] => 5
)

массив содержит php (php проверка наличия элемента в массиве)

Этот способ подходит для быстрой отладки, когда нужно посмотреть содержимое массива в любой момент выполнения скрипта.

Проблема:

Если не использовать <pre>, вывод будет в одну строку, особенно в браузере. Решение - всегда оборачивать print_r в <pre>.

Как увидеть типы и размеры данных с помощью var_dump?

Функция var_dump выводит не только значения, но и типы данных, а также длину строк. Она полезна, когда нужно проверить, является ли элемент строкой или числом.

<?php
$data = [1, 'hello', 3.14, true];
echo '<pre>';
var_dump($data);
echo '</pre>';
?>

Php между значениями (выборка значений массива в диапазоне php)

Результат:

array(4) {
  [0]=>
  int(1)
  [1]=>
  string(5) "hello"
  [2]=>
  float(3.14)
  [3]=>
  bool(true)
}

Php есть ли значение в массиве (поиск значения в массиве php)

Типичная ошибка:

var_dump без <pre> выдаёт нечитаемую строку. Кроме того, для больших массивов вывод может быть очень длинным. Решение - ограничить глубину с помощью xdebug.var_display_max_depth или временно использовать array_slice.

Как получить строку, которую можно использовать в коде?

var_export возвращает строку с валидным PHP-кодом, который можно вставить в скрипт для восстановления массива.

<?php
$arr = ['name' => 'John', 'age' => 30];
$export = var_export($arr, true);
echo '<pre>' . $export . '</pre>';
?>

Php значение массива в строку (преобразование массива в строку php)

Результат:

array (
  'name' => 'John',
  'age' => 30,
)

цикл значений php (цикл по массиву в php)

Эту строку можно сохранить в файл и потом подключить через include.

Как вывести массив, обходясь без функций отладки?

Цикл foreach позволяет вывести массив в любом формате, например в HTML-таблице или списке.

<?php
$items = ['apple', 'banana', 'cherry'];
echo '<ul>';
foreach ($items as $item) {
    echo '<li>' . $item . '</li>';
}
echo '</ul>';
?>

Php проверить массив (проверить, является ли переменная массивом в php)

Результат:

<ul>
  <li>apple</li>
  <li>banana</li>
  <li>cherry</li>
</ul>

Php new array (создание массива в php)

Для ассоциативного массива можно вывести ключи и значения:

<?php
$person = ['name' => 'Alice', 'age' => 25];
foreach ($person as $key => $value) {
    echo $key . ': ' . $value . '<br>';
}
?>

Php array access (доступ к элементам массива в php)

Как преобразовать массив в JSON?

Функция json_encode превращает массив в строку JSON, удобную для передачи в JavaScript или сохранения.

<?php
$colors = ['red', 'green', 'blue'];
echo json_encode($colors, JSON_UNESCAPED_UNICODE);
?>

Php объединить два массива (объединение двух массивов в php)

Результат:

["red","green","blue"]

Проблема с кириллицей:

По умолчанию json_encode экранирует Unicode символы. Флаг JSON_UNESCAPED_UNICODE отключает экранирование.

- Php длина массива (длина массива php)
- Php добавить (добавление в php)
- Php первый элемент (получение первого элемента в php)

Расширенные примеры вывода массива

Ниже приведены более сложные и специализированные способы отображения содержимого массивов.

Рекурсивный вывод многомерного массива

Стандартные функции print_r и var_dump поддерживают рекурсию, но для полного контроля можно написать собственную функцию:

Пример
<?php
function recursivePrint($arr, $indent = 0) {
    foreach ($arr as $key => $value) {
        echo str_repeat(' ', $indent * 4);
        if (is_array($value)) {
            echo $key . ': ' . '\n';
            recursivePrint($value, $indent + 1);
        } else {
            echo $key . ' => ' . $value . '\n';
        }
    }
}
$multi = ['a' => ['x' => 1, 'y' => 2], 'b' => 3];
echo '<pre>';
recursivePrint($multi);
echo '</pre>';
?>

Результат:

a: 
    x => 1
    y => 2
b => 3

Вывод массива в файл для последующего анализа

Когда массив очень большой, а вывод на экран неудобен, можно записать дамп в файл с помощью ob_start и file_put_contents.

Пример
<?php
$largeArray = range(1, 100); // пример
ob_start();
echo '<pre>';
print_r($largeArray);
echo '</pre>';
$output = ob_get_clean();
file_put_contents('dump.txt', strip_tags($output));
echo 'Дамп сохранён в dump.txt';
?>

Функция strip_tags удалит HTML-теги, оставив чистый текст.

Вывод массива в виде таблицы HTML

Для презентации данных удобно использовать HTML-таблицу с автоматическим заголовком.

Пример
<?php
$students = [
    ['name' => 'Иван', 'grade' => 5],
    ['name' => 'Мария', 'grade' => 4],
];
echo '<table border="1">';
// заголовок
if (!empty($students)) {
    echo '<tr>';
    foreach (array_keys($students[0]) as $header) {
        echo '<th>' . $header . '</th>';
    }
    echo '</tr>';
    foreach ($students as $row) {
        echo '<tr>';
        foreach ($row as $cell) {
            echo '<td>' . $cell . '</td>';
        }
        echo '</tr>';
    }
}
echo '</table>';
?>

Вывод с использованием debug_backtrace для имени переменной

Иногда полезно вывести не только значение, но и имя переменной. Это возможно через отладочную информацию.

Пример
<?php
function debugVar($var) {
    $trace = debug_backtrace();
    $call = $trace[0];
    // пытаемся найти имя переменной из строки вызова (упрощённо)
    // на практике используется var_dump с xdebug
    echo '<pre>';
    print_r($var);
    echo '</pre>';
}
$myArray = [10, 20];
debugVar($myArray);
?>

Этот подход ограничен, лучше применять xdebug или библиотеки типа Symfony VarDumper.

Обработка рекурсивных ссылок (зацикленных массивов)

Если массив содержит ссылки на самого себя, print_r может выдать ошибку превышения глубины. Для безопасного вывода используется var_dump с ограничением или функция-обёртка.

Пример
<?php
$recursive = [1, 2];
$recursive[] = &$recursive; // ссылка на себя
echo '<pre>';
// print_r($recursive); // может привести к бесконечному выводу
// Альтернатива: var_dump с ограничением (зависит от настроек)
var_dump($recursive); // покажет RECURSION
echo '</pre>';
?>

Результат var_dump покажет метку RECURSION, что безопасно.

PHP вывод содержимого массива - comments

En
содержимое массива php (php)