Bạn có thể muốn kiểm tra var_export
- trong khi nó không cung cấp cùng một đầu ra vì var_dump
nó cung cấp một $return
tham số thứ hai sẽ khiến nó trả về đầu ra của nó thay vì in nó:
$debug = var_export($my_var, true);
Tại sao?
Tôi thích cái lót này để sử dụng ob_start
và ob_get_clean()
. Tôi cũng thấy rằng đầu ra dễ đọc hơn một chút, vì nó chỉ là mã PHP.
Sự khác biệt giữa var_dump
và var_export
là var_export
trả về "biểu diễn chuỗi có thể phân tích cú pháp của một biến" trong khi var_dump
chỉ cần bỏ thông tin về một biến. Điều này có nghĩa trong thực tế là var_export
cung cấp cho bạn mã PHP hợp lệ (nhưng có thể không cung cấp cho bạn nhiều thông tin về biến, đặc biệt nếu bạn đang làm việc với các tài nguyên ).
Bản giới thiệu:
$demo = array(
"bool" => false,
"int" => 1,
"float" => 3.14,
"string" => "hello world",
"array" => array(),
"object" => new stdClass(),
"resource" => tmpfile(),
"null" => null,
);
// var_export -- nice, one-liner
$debug_export = var_export($demo, true);
// var_dump
ob_start();
var_dump($demo);
$debug_dump = ob_get_clean();
// print_r -- included for completeness, though not recommended
$debug_printr = print_r($demo, true);
Sự khác biệt về đầu ra:
var_export ( $debug_export
trong ví dụ trên):
array (
'bool' => false,
'int' => 1,
'float' => 3.1400000000000001,
'string' => 'hello world',
'array' =>
array (
),
'object' =>
stdClass::__set_state(array(
)),
'resource' => NULL, // Note that this resource pointer is now NULL
'null' => NULL,
)
var_dump ( $debug_dump
trong ví dụ trên):
array(8) {
["bool"]=>
bool(false)
["int"]=>
int(1)
["float"]=>
float(3.14)
["string"]=>
string(11) "hello world"
["array"]=>
array(0) {
}
["object"]=>
object(stdClass)#1 (0) {
}
["resource"]=>
resource(4) of type (stream)
["null"]=>
NULL
}
print_r ( $debug_printr
trong ví dụ trên):
Array
(
[bool] =>
[int] => 1
[float] => 3.14
[string] => hello world
[array] => Array
(
)
[object] => stdClass Object
(
)
[resource] => Resource id #4
[null] =>
)
Hãy cẩn thận: var_export
không xử lý các tham chiếu tròn
Nếu bạn đang cố gắng kết xuất một biến với các tham chiếu vòng tròn, hãy gọi var_export
sẽ dẫn đến cảnh báo PHP:
$circular = array();
$circular['self'] =& $circular;
var_export($circular);
Kết quả trong:
Warning: var_export does not handle circular references in example.php on line 3
array (
'self' =>
array (
'self' => NULL,
),
)
Cả hai var_dump
và print_r
, mặt khác, sẽ xuất chuỗi *RECURSION*
khi gặp các tham chiếu tròn.