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_dumpnó cung cấp một $returntham 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_startvà 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_dumpvà var_exportlà var_exporttrả 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_dumpchỉ cần bỏ thông tin về một biến. Điều này có nghĩa trong thực tế là var_exportcung 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_exporttrong 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_dumptrong 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_printrtrong 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_exportkhô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_dumpvà print_r, mặt khác, sẽ xuất chuỗi *RECURSION*khi gặp các tham chiếu tròn.