php var_dump () vs print_r ()


297

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

Відповіді:


355

На 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
)

Більше інформації


76
print_r (null) не поверне нічого, де var_dump (null) повертає NULL, що корисно при налагодженні
rosh3000

7
Чи можете ви продовжити свою відповідь за допомогою "var_export"?
joryl

1
Дві переваги var_dump () полягає в тому, що демпінгова інформація автоматично міститься в попередньому елементі. Під час використання var_dump () ви можете бачити, що кожен тип має свій колір. Підвищення читабельності.
Джуліан

3
@Julian, лише якщо встановлено xdebug
Leif Neland

57

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

З print_r()вами також може зберігати вихід в змінну:

$output = print_r($array, true);

що var_dump()не може зробити. Однак var_dump()можна показати типи даних.


9
var_dump () може бути збережена в змінної , хоча це трохи потворніше: stackoverflow.com/questions/139474 / ...
SgtPooki

7
ви також можете це "брат" var_export (), якщо вам потрібно зберегти
CSᵠ

21

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

Отже, ви отримаєте => (string)"var" Приклад тут.

print_r() просто виведе вміст.

Виводить => "var" Приклад тут.


12
Я думаю, що кращим прикладом може бути те, var_dump(0.0);які виходи float(0)проти print_r(0.0);яких результатів 0(отже, це призводить до можливої ​​плутанини типу) ...
ircmaxell

13

Якщо ви запитуєте, коли ви повинні використовувати що, я зазвичай використовую print_r()для відображення значень та var_dump()для проблем із змінними типами.


8

var_dumpвідображає структуровану інформацію про об'єкт / змінну. Сюди входять тип і значення. Подібно print_rмасиви рекурсуються через і з відступом.

print_rвідображає читану людиною інформацію про значення у форматі, що представляє ключі та елементи для масивів та об'єктів.

Найважливіше, що потрібно помітити, це var_dumpтип виводу, а також значення, а print_rні.


5

Суттєві відмінності між var_dumpтаprint_r

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

var_dumpне може повернути жодне значення, воно може скидати / друкувати значення лише тоді, коли print_r може повернути інформацію змінної, якщо ми встановимо другий параметр print_rзначення true . Повернене значення print_rбуде в рядковому форматі.

Інформація, надрукована print_rнабагато більше, читається у форматі, де var_dumpдрукуються неотримані значення.

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


1
vardumpбере один або кілька аргументів, і кожен буде скинутий.
єпископ

@bishop, так, ти прав, може брати більше аргументів, але це не повертає ніякої цінності
Akshay Khale

так виправте свою відповідь?
Говінд Рай

Це фіксований @GovindRai
Акшай Khale

"var_dump не може повернути жодне значення"? Так, це може. Свого роду. ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty

3

Я рекомендую додатково помістити висновок var_dump () або printr у попередній тег під час виведення в браузер.

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

Дасть більш читабельний результат.


2

var_dump($var) показує поглиблені деталі, надаючи додаткові деталі

  • тип даних значення (включаючи спадкові елементи)
  • кількість елементів у змінній
  • довжина значення

1

З великими масивами print_r може показати набагато більше інформації, ніж корисна. Ви можете усікати так, показуючи перші 2000 символів або скільки завгодно потрібних.

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

1

var_dump (): -

  1. Ця функція відображає структуровану інформацію про один або більше виразів, що включає його тип та значення. Масиви та об'єкти досліджуються рекурсивно зі значеннями, відведеними для відображення структури.
  2. Ця функція відображає номер елемента в змінній.
  3. Ця функція відображає довжину змінної.
  4. Не може повернути значення лише друкувати значення.
  5. це використання для налагодження.

Приклад: -

<?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 (): -

  1. Друкує інформацію, що читається людиною, про змінну.
  2. Не відображати кількість елемента в змінній як var_dump ().
  3. Не відображати довжину змінної у змінній як var_dump ().
  4. Повертаємо значення, якщо встановити другий параметр 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>

"Неможливо повернути значення лише для друку." Так, це може. Свого роду. ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty

0

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


0

Ми можемо передавати кілька параметрів за допомогою var_dump, наприклад:

var_dump("array1",$array1,"array2",$array2);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.