php var_dump () vs print_r ()

263

В чем разница между var_dump() и print_r() с точки зрения выплескивания массива в виде строки?

Теги:
arrays

12 ответов

344
Лучший ответ

Функция var_dump отображает структурированную информацию о переменных/выражениях, включая ее тип и значение. Массивы исследуются рекурсивно со значениями, отступающими для отображения структуры. Он также показывает, какие значения массива и свойства объекта являются ссылками.

print_r() отображает информацию о переменной таким образом, чтобы ее читали люди. значения массива будут представлены в формате, который показывает ключи и элементы. Аналогичные обозначения используются для объектов.

Пример:

$obj = (object) array('qualitypoint', 'technologies', 'India');

var_dump($obj) будет отображаться ниже на экране.

object(stdClass)#1 (3) {
 [0]=> string(12) "qualitypoint"
 [1]=> string(12) "technologies"
 [2]=> string(5) "India"
}

И, print_r($obj) будет отображаться под выводом на экране.

stdClass Object ( 
 [0] => qualitypoint
 [1] => technologies
 [2] => India
)

Дополнительная информация

  • 66
    print_r (null) ничего не вернет, где var_dump (null) возвращает NULL, что полезно при отладке
  • 7
    Можете ли вы расширить свой ответ с помощью «var_export»?
Показать ещё 2 комментария
51

Как правило, вывод print_r( ) более приятный, более сжатый и более легкий для чтения, а также более читаемый человеком, но не может отображать типы данных.

С помощью print_r() вы также можете сохранить вывод в переменной:

$output = print_r($array, true);

который var_dump() не может сделать. Тем не менее var_dump() может отображать типы данных.

  • 9
    var_dump () может храниться в переменной, хотя это немного страшнее: stackoverflow.com/questions/139474/…
  • 7
    Вы также можете это 'брат' var_export (), если вам нужно сохранить
21

var_dump() покажет вам тип вещи, а также то, что в ней.

Итак, вы получите => (string)"var" Пример здесь.

print_r() будет просто выводить содержимое.

Пример: output => "var".

  • 10
    Я думаю, что лучшим примером будет var_dump(0.0); который выводит float(0) против print_r(0.0); который выводит 0 (следовательно, приводит к возможной путанице типов) ...
12

Если вы спрашиваете, когда вы должны использовать что-то, я обычно использую print_r() для отображения значений и var_dump() для проблем с типами переменных.

7

var_dump отображает структурированную информацию об объекте/переменной. Это включает тип и значения. Подобно print_r массивы рекурсируются и отступают.

print_r отображает читаемую человеком информацию о значениях в формате, представляющем ключи и элементы для массивов и объектов.

Самое главное отметить var_dump будет выводить тип, а также значения, пока print_r не делает.

5

Значительные различия между var_dump и print_r

обе функции выгружают информацию о переменной, но var_dump несколько параметров, которые будут сброшены, где as print_r может принимать два параметра, из которых первый параметр - это переменная, которую вы хотите дамп, а второй - логическое значение.

var_dump не может возвращать какое-либо значение, он может только сбросить/распечатать значения, где print_r может вернуть информацию о переменной, если мы установим второй параметр print_r в true. Возвращаемое значение print_r будет в формате string.

Информация, напечатанная print_r, намного больше в читаемом формате, где var_dump печатает необработанные значения.

Функция

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

  • 1
    vardump принимает один или несколько аргументов, и каждый из них будет сброшен.
  • 0
    @bishop, да, вы правы, он может принимать больше аргументов, но не возвращает никакого значения
Показать ещё 2 комментария
4

Я бы рекомендовал поместить вывод var_dump() или printr в тег pre при выводе в браузер.

print "<pre>";
print_r($dataset);
print "</pre>";

Дает более читаемый результат.

2

var_dump($var) показывает подробные сведения, предоставляя дополнительную информацию о

  • тип данных значения (включая элементы потомка)
  • количество элементов в переменной
  • длина значения
1

var_dump(): -

  • Эта функция отображает структурированную информацию об одном или нескольких выражениях, которые включают его тип и значение. Массивы и объекты исследуются рекурсивно со значениями, отступающими для отображения структуры.
  • Эта функция отображает число элементов в переменной.
  • Эта функция отображает длину переменной.
  • Не удается вернуть значение только для печати значения.
  • используется для целей отладки.

Пример: -

<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>

вывод: -

   array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
}

print_r(): -

  • Распечатывает удобочитаемую информацию о переменной.
  • Не отображать число элементов в переменной как var_dump().
  • Не показывать длину переменной в переменной как var_dump().
  • Возвращает значение, если мы установили второй параметр в true в printf_r().

Пример: -

<pre>
<?php
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'));
print_r ($a);
?>
</pre>

Вывод: -

<pre>
Array
(
    [a] => apple
    [b] => banana
    [c] => Array
        (
            [0] => x
            [1] => y
            [2] => z
        )
)
</pre>
1

С большими массивами print_r может отображать гораздо больше информации, чем полезно. Вы можете обрезать его так, показывая первые 2000 символов или сколько угодно вам.

  echo "<pre>" . substr(print_r($dataset, 1), 0, 2000) . "</pre>";
0

Мы можем передать несколько параметров с помощью var_dump, например:

var_dump("array1",$array1,"array2",$array2);
0

print_r() и var_dump() - функции отладки Array, используемые в PHP для целей отладки. Функция print_r() возвращает ключи массива и его элементы как Array ([key] = value), тогда как функция var_dump() возвращает список массивов с его ключами массива с типом и длиной данных, например Array (array_length) {[0] = string (1) 'а'}.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню