Tôi sử dụng echo
và print_r
nhiều, và hầu như không bao giờ sử dụng print
.
Tôi cảm thấy echo
là một vĩ mô, và print_r
là một bí danh var_dump
.
Nhưng đó không phải là cách tiêu chuẩn để giải thích sự khác biệt.
Tôi sử dụng echo
và print_r
nhiều, và hầu như không bao giờ sử dụng print
.
Tôi cảm thấy echo
là một vĩ mô, và print_r
là một bí danh var_dump
.
Nhưng đó không phải là cách tiêu chuẩn để giải thích sự khác biệt.
Câu trả lời:
print
và echo
ít nhiều giống nhau; cả hai đều là cấu trúc ngôn ngữ hiển thị các chuỗi. Sự khác biệt là tinh tế: print
có giá trị trả về là 1 nên có thể được sử dụng trong các biểu thức trong khi echo
có void
kiểu trả về; echo
có thể lấy nhiều tham số, mặc dù việc sử dụng như vậy là rất hiếm; echo
nhanh hơn một chútprint
. (Cá nhân, tôi luôn luôn sử dụng echo
, không bao giờ print
.)
var_dump
in ra một kết xuất chi tiết của một biến, bao gồm loại của nó và loại của bất kỳ mục con nào (nếu đó là một mảng hoặc một đối tượng). print_r
in một biến ở dạng dễ đọc hơn: chuỗi không được trích dẫn, thông tin loại bị bỏ qua, kích thước mảng không được cung cấp, v.v.
var_dump
print_r
theo kinh nghiệm của tôi thường hữu ích hơn khi gỡ lỗi. Nó đặc biệt hữu ích khi bạn không biết chính xác những giá trị / loại bạn có trong các biến của mình. Hãy xem xét chương trình thử nghiệm này:
$values = array(0, 0.0, false, '');
var_dump($values);
print_r ($values);
Với print_r
bạn không thể nói sự khác biệt giữa 0
và 0.0
, false
và ''
:
array(4) {
[0]=>
int(0)
[1]=>
float(0)
[2]=>
bool(false)
[3]=>
string(0) ""
}
Array
(
[0] => 0
[1] => 0
[2] =>
[3] =>
)
tiếng vang
Không có giá trị trả lại
ví dụ echo "String 1", "String 2"
in
Trả về 1
, vì vậy nó có thể được sử dụng trong một biểu thức
ví dụ print "Hello"
hoặc là, if ($expr && print "foo")
in_r ()
var_dump ()
print_r()
, ví dụ, nó cũng in loại giá trịvar_export ()
print_r()
vàvar_dump()
- kết quả đầu ra là mã PHP hợp lệ!Ghi chú:
print
có thể được sử dụng trong một biểu thức, tôi khuyên mọi người tránh làm như vậy, vì nó không tốt cho khả năng đọc mã (và vì nó không bao giờ có ích). Các quy tắc ưu tiên khi nó tương tác với các toán tử khác cũng có thể gây nhầm lẫn. Vì điều này, cá nhân tôi không bao giờ có lý do để sử dụng nó echo
.echo
và print
là các cấu trúc ngôn ngữ, print_r()
và var_dump()
/ var_export()
là các hàm thông thường. Bạn không cần dấu ngoặc đơn để kèm theo các đối số echo
hoặc print
(và nếu bạn sử dụng chúng, chúng sẽ được xử lý như trong biểu thức).var_export()
trả về mã PHP hợp lệ cho phép đọc lại các giá trị sau đó, việc dựa vào mã này cho mã sản xuất có thể giúp giới thiệu các lỗ hổng bảo mật dễ dàng hơn do nhu cầu sử dụng eval()
. Thay vào đó, tốt hơn là sử dụng một định dạng như JSON để lưu trữ và đọc lại các giá trị. Tốc độ sẽ tương đương.echo $a, $b;
cú pháp khi bạn có thể thực hiện echo $a . $b;
: nếu $ a hoặc $ b là các chuỗi thực sự lớn thì chuỗi sau sẽ sử dụng thêm bộ nhớ và thời gian tạo ra một phiên bản chuỗi được nối riêng trong bộ nhớ trước nó có thể bắt đầu xuất ra trình duyệt.
echo $a; echo $b;
quá.
Chỉ cần thêm vào câu trả lời của John , echo
nên là người duy nhất bạn sử dụng để in nội dung lên trang.
print
chậm hơn một chút var_dump()
và print_r()
chỉ nên được sử dụng để gỡ lỗi.
Ngoài ra, điều đáng nói là print_r()
và var_dump()
sẽ lặp lại theo mặc định, thêm một đối số thứ hai print_r()
vào ít nhất là đánh giá thành đúng để thay thế nó trở lại, ví dụ print_r($array, TRUE)
.
Sự khác biệt giữa tiếng vang và trở lại là:
echo
ing và return
ing là gì?
print_r
trả về khá nhiều trong khi tôi đang mã hóa PHP. Tuy nhiên, tôi có xu hướng viết print_r( $foo, 1 );
. Nó nhanh hơn để gõ;) Và về điều này tôi không quan tâm nhiều về khả năng đọc vì tôi thấy tên này cũng print_r
không được mô tả.
var_dump()
không hỗ trợ đối số thứ hai cho phép nó trả về giá trị như print_r()
hiện tại, bởi vì var_dump()
có thể chấp nhận nhiều đối số cho đầu ra.
echo
Không có loại trả lại
print
Có loại trả về
print_r()
Đầu ra như được định dạng,
Sự khác biệt giữa echo , print , print_r và var_dump rất đơn giản.
tiếng vang
echo thực sự không phải là một chức năng mà là một cấu trúc ngôn ngữ được sử dụng để in đầu ra. Nó nhanh hơn một chút so với bản in.
echo "Hello World"; // this will print Hello World
echo "Hello ","World"; // Multiple arguments - this will print Hello World
$var_1=55;
echo "$var_1"; // this will print 55
echo "var_1=".$var_1; // this will print var_1=55
echo 45+$var_1; // this will print 100
$var_2="PHP";
echo "$var_2"; // this will print PHP
$var_3=array(99,98,97) // Arrays are not possible with echo (loop or index value required)
$var_4=array("P"=>"3","J"=>"4"); // Arrays are not possible with echo (loop or index value required)
Bạn cũng có thể sử dụng câu lệnh echo có hoặc không có ngoặc đơn
echo ("Hello World"); // this will print Hello World
in
Giống như echo cấu trúc in cũng là một cấu trúc ngôn ngữ và không phải là một chức năng thực sự. Sự khác biệt giữa echo và print là in chỉ chấp nhận một đối số duy nhất và in luôn trả về 1. Trong khi đó echo không có giá trị trả về. Vì vậy, tuyên bố in có thể được sử dụng trong các biểu thức.
print "Hello World"; // this will print Hello World
print "Hello ","World"; // Multiple arguments - NOT POSSIBLE with print
$var_1=55;
print "$var_1"; // this will print 55
print "var_1=".$var_1; // this will print var_1=55
print 45+$var_1; // this will print 100
$var_2="PHP";
print "$var_2"; // this will print PHP
$var_3=array(99,98,97) // Arrays are not possible with print (loop or index value required)
$var_4=array("P"=>"3","J"=>"4"); // Arrays are not possible with print (loop or index value required)
Cũng giống như echo , in có thể được sử dụng có hoặc không có dấu ngoặc đơn.
print ("Hello World"); // this will print Hello World
in_r
Hàm print_r () được sử dụng để in thông tin có thể đọc được của con người về một biến. Nếu đối số là một mảng, hàm print_r () sẽ in các khóa và phần tử của nó (giống với các đối tượng).
print_r ("Hello World"); // this will print Hello World
$var_1=55;
print_r ("$var_1"); // this will print 55
print_r ("var_1=".$var_1); // this will print var_1=55
print_r (45+$var_1); // this will print 100
$var_2="PHP";
print_r ("$var_2"); // this will print PHP
$var_3=array(99,98,97) // this will print Array ( [0] => 1 [1] => 2 [2] => 3 )
$var_4=array("P"=>"3","J"=>"4"); // this will print Array ( [P] => 3 [J] => 4 )
var_dump
Hàm var_dump thường được sử dụng để gỡ lỗi và in thông tin (loại và giá trị) về một biến / mảng / đối tượng.
var_dump($var_1); // this will print int(5444)
var_dump($var_2); // this will print string(5) "Hello"
var_dump($var_3); // this will print array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
var_dump($var_4); // this will print array(2) { ["P"]=> string(1) "3" ["J"]=> string(1) "4" }
Tiếng vọng :
Đây là câu lệnh không phải là hàm Không có giá trị trả về
Không yêu cầu dấu ngoặc đơn
Không in mảng
In
Đây là chức năng thực sự
Trả về loại 1
Yêu cầu dấu ngoặc đơn
Không in mảng
In_r
In ở định dạng dễ đọc của con người
Chuỗi không trong dấu ngoặc kép
Không chi tiết Thông tin về biến như loại và tất cả
var_dump
Tất cả thông tin kết xuất của biến như loại phần tử và phần tử phụ
print
là không một chức năng thực tế, nó là một cấu trúc ngôn ngữ giống như tiếng vang. Nó cũng có thể được sử dụng như một tuyên bố. echo
là không một tuyên bố và cũng không nó có thể được sử dụng trong một. print
không không cần dấu ngoặc đơn, cũng không phải làm một trong hai tiếng vang hoặc in sử dụng dấu ngoặc đơn như một chức năng sẽ. Bạn cũng đã bỏ lỡ một trong những khác biệt chính - echo chấp nhận nhiều chuỗi để echo được phân tách bằng dấu phẩy.
** Echocan chấp nhận nhiều biểu thức trong khi in không thể. Hàm PHP Print_r () được sử dụng để trả về một mảng ở dạng người có thể đọc được. Nó được viết đơn giản là
![Print_r ($your_array)][1]
echo: echo là một cấu trúc ngôn ngữ trong đó không bắt buộc phải sử dụng dấu ngoặc đơn với nó và nó có thể lấy bất kỳ số lượng tham số nào và trả về khoảng trống.
void echo (param1,param2,param3.....);
Example: echo "test1","test2,test3";
print: nó là một cấu trúc ngôn ngữ khi không cần sử dụng dấu ngoặc đơn, nó chỉ cần lấy một tham số và trả về
1 always.
int print(param1);
print "test1";
print "test1","test2"; // It will give syntax error
prinf: Đây là một hàm mất ít nhất một chuỗi và định dạng kiểu và trả về độ dài của chuỗi đầu ra.
int printf($string,$s);
$s= "Shailesh";
$i= printf("Hello %s how are you?",$s);
echo $i;
Output : Hello Shailesh how are you?
27
echo returns void so its execution is faster than print and printf
print_r()
được sử dụng để in các mảng ở định dạng có thể đọc được của con người.
print_r () có thể in ra giá trị nhưng cũng có thể nếu tham số cờ thứ hai được truyền và là TRUE - nó sẽ trả về kết quả được in dưới dạng chuỗi và không có gì gửi đến đầu ra tiêu chuẩn. Giới thiệu về var_dump. Nếu trình gỡ lỗi XDebug được cài đặt để kết quả đầu ra sẽ được định dạng theo cách dễ đọc và dễ hiểu hơn nhiều.