09/10/2018, 23:39

Sự khác nhau giữa print() và echo ()

Câu hỏi cũ rồi nhg hỏi mãi
Với cả print_r khác với print ở chỗ nào ??
superthinb viết 01:52 ngày 10/10/2018
Hãy đọc file hướng dẫn của PHP ấy. Muốn biết sự khác nhau rõ rệt nhất bạn hãy thử một vài cách mà bạn nghĩ ra xem. Nó khác nhau chỗ nào là biết ngay.

print là một function, còn echo là một language structure. Lúc thì bạn có thể dùng function, lúc thì không và cũng vậy với structure.

nhìn chung thì tốc độ echo() được đánh giá nhanh hơn print()

ví dụ: bạn không thể viết $hello = echo "Hello boy"; được
mà phải viết $hello = print("Hello boy");

print_r() : xuất biến ra dạng người có thể đọc được

ví dụ:

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

thì sẽ ra kết quả là:

Array
(
[a] => apple
[b] => banana
[c] => Array
(
[0] => x
[1] => y
[2] => z
)
)
Bạn dùng print($a) sẽ cho ra cái gì? Hãy tự thử để biết.
Mitxixipi viết 01:41 ngày 10/10/2018
OK, cám ơn bác nhé
Nhân tiện cho hỏi luôn
Sự khác nhau giữa các hàm print ??
Print_r() ; printf, ... nữa
lyhuuloi viết 01:45 ngày 10/10/2018
Code:
ví dụ: bạn không thể viết $hello = echo "Hello boy"; được
mà phải viết $hello = print("Hello boy");
Ai nói không thể viết đó bạn hiền Bạn thử viết trên file php rồi chạy thử xem coi nó có báo lỗi gì ko ?
anhtuannd viết 01:54 ngày 10/10/2018
print_r() định nghĩa như bác thinb nói ở bên trên, cái này chủ yếu dùng để in biến mảng ra màn hình.
printf() xuất ra theo định dạng, cái này giống ngôn ngữ C.
Vd: printf("%d", 1);
print đơn giản là xuất 1 xâu ra màn hình, print() là language construct chứ không phải function.
print() is not actually a real function (it is a language construct) so you are not required to use parentheses with its argument list
// khi dùng print không nhất thiết phải có dấu ngoặc
Tương tự vậy, echo cũng là language construct. Điểm khác nhau là echo không trả về giá trị (void), còn print vẫn còn hơi hướng của function nên trả về giá trị nguyên (0 hoặc 1)
Mitxixipi viết 01:45 ngày 10/10/2018
cám ơn các bác, cuối cùng thì em chi biết là echo() khác với print() ở chỗ print() có thể viết $ret = print "Hello World"; nó sẽ tự in ra luôn và khi đó biến $ret sẽ có giá trị bằng 1 :|

Theo em biết printf thì xuất theo kiểu C, thế còn sprintf và vprints khác nhau ntn hả các bác ?
cho em hỏi,
printf("%2.2f",$gia_tri); thì có nghĩa là nó lấy phần thập phân 2 chữ số ( tất nhiên rồi ) còn phần số nguyên lấy là 2 hả bác ?
Ví dụ $gia_tri mà là 512 thì sao ?
Rõ ràng 512 là 3 chữ số cơ mà nhỉ ?
jiSh@n viết 01:47 ngày 10/10/2018
print là 1 language construct giống hệt như echo, nó ko phải là 1 function. Và bởi vì ko phải là function nên ko thể được gọi dưới dạng variable function :
PHP Code:
$func 'print';
$func(...); // ko hợp lệ 
Điểm khác biệt duy nhất giữa echo và print là echo có thể dùng với nhiều tham số, còn print chỉ có 1 tham số mà thôi.
PHP Code:
echo 'A'// hợp lệ
echo 'A','B','C'// hợp lệ
echo ('A','B','C'); // ko hợp lệ
echo ('A'),('B'),('C'); // hợp lệ

print 'A'//hợp lệ
print ('A'); // hợp lệ
print 'A''B'// chạy thử sẽ biết kết quả lol 
Về tốc độ của print và echo, do có thể gọi $hello = print("Hello boy"); và $hello có giá trị 1, có nghĩa là nó có giá trị trả về (cách hành xử như 1 function). Khi print() được đặt trong 1 biểu thức thì nó có độ ưu tiên toán tử gần như là thấp nhất, chỉ cao hơn ",", AND, OR và XOR. Trong khi đó ko thể đặt echo vào 1 biểu thức, nghĩa là echo ko trả về kết quả nên echo sẽ nhanh hơn print.

Về printf("%2.2f", 512); số 2 trước dấu "." là độ dài của kết quả trả về, để %2.2f bạn sẽ ko thấy tác dụng trong trường hợp của 512, hay thay thế bằng %10.2f và bạn sẽ hiểu rõ công dụng của nó. Nhưng khi xem kết quả thì nhớ chọn chức năng View source nhé
jiSh@n viết 01:41 ngày 10/10/2018
Quote Được gửi bởi lyhuuloi View Post
Code:
ví dụ: bạn không thể viết $hello = echo "Hello boy"; được
mà phải viết $hello = print("Hello boy");
Ai nói không thể viết đó bạn hiền Bạn thử viết trên file php rồi chạy thử xem coi nó có báo lỗi gì ko ?
Kết quả hả
Parse error: parse error, unexpected T_ECHO in ... on line ...
Bài liên quan
0