php var_dump () so với print_r ()


297

Sự khác biệt giữa var_dump()print_r()về việc phun ra một mảng dưới dạng chuỗi là gì?

Câu trả lời:


355

Các var_dumphiển thị chức năng cấu trúc thông tin về biến / biểu thức bao gồm cả của nó loạigiá trị . Mảng được khám phá đệ quy với các giá trị thụt vào để hiển thị cấu trúc. Nó cũng chỉ ra giá trị mảng và thuộc tính đối tượng nào là tham chiếu.

Con người print_r()hiển thị thông tin về một biến theo cách mà con người có thể đọc được. giá trị mảng sẽ được trình bày theo định dạng hiển thị các khóaphần tử . Ký hiệu tương tự được sử dụng cho các đối tượng.

Thí dụ:

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

var_dump($obj) sẽ hiển thị bên dưới đầu ra trong màn hình.

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

Và, print_r($obj)sẽ hiển thị dưới đầu ra trong màn hình.

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

Thêm thông tin


76
print_r (null) sẽ không trả về bất cứ điều gì khi var_dump (null) trả về NULL rất hữu ích khi gỡ lỗi
rosh3000

7
Bạn có thể mở rộng câu trả lời của mình với 'var_export' không?
joryl

1
Hai ưu điểm của var_dump () là thông tin được kết xuất tự động được đặt trong một phần tử trước. Khi sử dụng var_dump () bạn có thể thấy rằng mỗi loại có màu riêng. Tăng cường khả năng đọc.
Julian

3
@Julian chỉ khi xdebug được cài đặt
Leif Neland

57

Nói chung là, print_r( ) đầu ra đẹp hơn, ngắn gọn hơn và dễ đọc hơn, hay còn gọi là con người dễ đọc hơn nhưng không thể hiển thị các loại dữ liệu.

Với print_r()bạn cũng có thể lưu trữ đầu ra thành một biến:

$output = print_r($array, true);

var_dump()không thể làm được Tuy nhiên, var_dump()có thể hiển thị các loại dữ liệu.


9
var_dump () có thể được lưu trữ trong một biến mặc dù nó hơi xấu hơn: stackoverflow.com/questions/139474/
Kẻ

7
bạn cũng có thể là 'anh em' var_export () nếu bạn cần lưu
CSᵠ

21

var_dump() sẽ cho bạn thấy loại của sự vật cũng như những gì trong đó.

Vì vậy, bạn sẽ nhận được => (string)"var" Ví dụ ở đây.

print_r() sẽ chỉ xuất nội dung.

Sẽ xuất => "var" Ví dụ ở đây.


12
Tôi nghĩ ví dụ tốt hơn sẽ là var_dump(0.0);đầu ra nào float(0)so với print_r(0.0);đầu ra nào 0(do đó dẫn đến sự nhầm lẫn kiểu có thể xảy ra) ...
ircmaxell

13

Nếu bạn hỏi khi nào bạn nên sử dụng cái gì, tôi thường sử dụng print_r()để hiển thị các giá trị và var_dump()khi gặp sự cố với các loại biến.


8

var_dumphiển thị thông tin có cấu trúc về đối tượng / biến. Điều này bao gồm loại và giá trị. Giống như print_rmảng được đệ quy thông qua và thụt lề.

print_rhiển thị thông tin có thể đọc được của con người về các giá trị với định dạng trình bày các khóa và phần tử cho mảng và đối tượng.

Điều quan trọng nhất cần chú ý là var_dumploại đầu ra cũng như các giá trị trong khi print_rkhông.


5

Sự khác biệt đáng kể giữa var_dumpprint_r

cả hai hàm đều bỏ thông tin về biến , nhưng var_dumpnhiều tham số sẽ được kết xuất, trong đó print_rcó thể lấy hai tham số trong đó tham số đầu tiên là biến bạn muốn kết xuất và thứ hai là giá trị boolean.

var_dumpkhông thể trả lại bất kỳ giá trị mà nó chỉ có thể đổ / in các giá trị nơi như print_r có thể trả lại thông tin biến nếu chúng ta thiết lập tham số thứ hai của print_rđể đúng . Giá trị trả về của print_rsẽ ở định dạng chuỗi .

Thông tin được in bằng print_rnhiều hơn ở định dạng có thể đọc được khi var_dumpin các giá trị thô.

print_rHàm có thể được sử dụng trong nhiều ngữ cảnh trong đó var_dumpchủ yếu có thể được sử dụng trong mục đích gỡ lỗi vì nó không thể trả về giá trị.


1
vardumpmất một hoặc nhiều đối số và mỗi đối số sẽ được kết xuất.
giám mục

@bishop, vâng, bạn đúng, nó có thể mất nhiều đối số hơn, nhưng nó không trả về bất kỳ giá trị nào
Akshay Khale

vậy sửa câu trả lời của bạn?
Govind Rai

Nó đã được sửa @GovindRai
Akshay Khale

"var_dump không thể trả lại bất kỳ giá trị nào"? Có nó có thể. Kinda. ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty

3

Tôi thực sự khuyên bạn nên đưa đầu ra của var_dump () hoặc printr vào một thẻ trước khi xuất ra trình duyệt.

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

Sẽ cho một kết quả dễ đọc hơn.


2

var_dump($var) hiển thị chi tiết chuyên sâu, bằng cách cung cấp thêm chi tiết về

  • kiểu dữ liệu của giá trị (bao gồm các phần tử con cháu)
  • số phần tử trong một biến
  • chiều dài của giá trị

1

Với các mảng lớn, print_r có thể hiển thị nhiều thông tin hơn là hữu ích. Bạn có thể cắt ngắn nó như thế này, hiển thị 2000 ký tự đầu tiên hoặc tuy nhiên nhiều ký tự bạn cần.

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

1

var_dump (): -

  1. Hàm này hiển thị thông tin có cấu trúc về một hoặc nhiều biểu thức bao gồm loại và giá trị của nó. Mảng và đối tượng được khám phá đệ quy với các giá trị thụt vào để hiển thị cấu trúc.
  2. Hàm này hiển thị số phần tử trong một biến.
  3. Hàm này hiển thị chiều dài của biến.
  4. Không thể trả về giá trị chỉ in giá trị.
  5. nó được sử dụng cho mục đích gỡ lỗi.

Thí dụ :-

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

đầu ra: -

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

in_r (): -

  1. In thông tin con người có thể đọc được về một biến.
  2. Không hiển thị số phần tử trong một biến là var_dump ().
  3. Không hiển thị độ dài của biến trong một biến là var_dump ().
  4. Trả về giá trị nếu chúng ta đặt tham số thứ hai thành true trong printf_r ().

Thí dụ :-

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

Đầu ra: -

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

"Không thể trả lại giá trị chỉ in giá trị." Có nó có thể. Kinda. ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty

0

print_r () và var_dump () là các hàm gỡ lỗi mảng được sử dụng trong PHP cho mục đích gỡ lỗi. Hàm print_r () trả về các khóa mảng và các thành viên của nó dưới dạng Array ([key] = value) trong khi hàm var_dump () trả về danh sách mảng với các khóa mảng với kiểu dữ liệu và độ dài, ví dụ Array (mảng_length) {[0] = chuỗi (1) 'a'}.


0

Chúng ta có thể truyền nhiều tham số với var_dump như:

var_dump("array1",$array1,"array2",$array2);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.