PDA

View Full Version : Sự khác nhau giữa print() và echo ()



Mitxixipi
09-01-2007, 01:39
Câu hỏi cũ rồi nhg hỏi mãi :D :D
Với cả print_r khác với print ở chỗ nào ??

superthinb
09-01-2007, 01:57
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
09-01-2007, 10:30
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
09-01-2007, 13:16
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
09-01-2007, 19:02
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
12-08-2007, 23:54
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
13-08-2007, 00:43
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 :

$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.


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
13-08-2007, 00:48
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ả lol
Parse error: parse error, unexpected T_ECHO in ... on line ... lol lol