Khi debug, giải quyết triệt để với thông tin chi tiết và giám sát chạy từng bước ... thì bạn cần công cụ chuyên Debug, ví dụ Sử dụng XDebug. Tuy nhiên, nhiều trường hợp bạn muốn xuất thông tin về một biến ra ngay stdout (buffer, màn hình trình duyệt) thì có thể sử dụng các hàm sau:
Hàm var_dump() kết xuất thông tin biến trong PHP
Hàm var_dump() sẽ hiện thị thông tin về giá trị (với đối tượng thì nó gồm thuộc tính public, private, protected) và kiểu dữ liệu, của một hoặc nhiều biến kể cả biểu thức. Cú pháp:
var_dump($var1, $var2 ...);
$a = 123; $b = 123.123; $c = 'XuanThuLab'; var_dump($a); // int 123 var_dump($b); // float 123.123 var_dump($c); // string 'XuanThuLab' (length=10) var_dump($a == $b); // boolean false var_dump($a, $b, $c, $a == $b); // Cả 4 câu lệnh trên có thể viết gộp lại
Với biến mạng, var_dump sẽ đệ quy hiện thị toàn bộ cấu trúc (các phần tử con)
$array = [1,2, 'three' => [ 'x', 'y', ['a', 'b']]]; var_dump($array); /* 0 => int 1 1 => int 2 'three' => array (size=3) 0 => string 'x' (length=1) 1 => string 'y' (length=1) 2 => array (size=2) 0 => string 'a' (length=1) 1 => string 'b' (length=1) */
Hàm var_export() trong php
Hàm var_export giống với var_dump, nó kết xuất thông tin của một biến (hoặc biểu thức), nhưng có thêm thiết lập thông tin đó xuất ra output hay trả về chuỗi.
// mặc định return là false -> thông tin xuất ra ngay // nếu truyền $return = true -> hàm trả về chuỗi chứa thông tin var_export($var, $return = false);
Ví dụ:
$abc = [1,2,3,4]; $info = var_export($abc); echo '<pre>'.$info.'</pre>';
Hàm print_r trong php
Hàm print_r giống với var_export cũng lấy thông tin về biến và có thiết lập trả về chuỗi hay xuất kết quả luôn. Tuy thông tin lấy ra nó trình bày khác đi: biến có kiểu đơn giản scalar (int, float, string, bool) thì nó kết xuất giá trị, với biến mảng, đối tượng thì nó định dạng hiện thị key và value có vẻ dễ đọc hơn
print_r($var, $return = false);
$array = [1,2, 'three' => [ 'x', 'y', ['a', 'b']]]; echo '<pre>' . print_r($a, true) . '</pre>'; /* Array ( [0] => 1 [1] => 2 [three] => Array ( [0] => x [1] => y [2] => Array ( [0] => a [1] => b ) ) ) */