Sử dụng echo và print để hiển thị dữ liệu trong PHP

PHP Tutorial | by Học PHP

Cả echoprint đều có chung mục đích là đưa dữ liệu từ thế giới PHP của bạn ra bên ngoài, chúng lại có những đặc điểm và cách hoạt động không hoàn toàn giống nhau. Việc hiểu rõ sự khác biệt này sẽ giúp bạn sử dụng chúng hiệu quả hơn, viết code sạch hơn và thậm chí là debug nhanh hơn khi gặp vấn đề.

Trong bài viết này, mình sẽ cùng tìm hiểu chi tiết về echoprint – từ cú pháp, cách sử dụng, đến những ưu và nhược điểm riêng của từng loại. Hãy cùng tìm hiểu để làm chủ cách hiển thị dữ liệu trong PHP nhé!

Giới thiệu chung về hiển thị dữ liệu trong PHP

Khi bạn lập trình web với PHP, việc hiển thị thông tin ra bên ngoài – thường là trình duyệt của người dùng – là một phần không thể thiếu. Dù bạn đang xây dựng một website phức tạp hay chỉ là một đoạn mã nhỏ để tính toán, bạn sẽ luôn cần một cách để đưa kết quả hoặc thông báo đến người xem.

Tầm quan trọng của việc hiển thị dữ liệu

Việc hiển thị dữ liệu có vai trò then chốt trong mọi ứng dụng web:

Truyền tải thông tin từ backend ra frontend (trình duyệt): PHP là ngôn ngữ chạy ở phía máy chủ (backend). Sau khi xử lý logic, truy vấn cơ sở dữ liệu hay tính toán phức tạp, PHP cần "in" ra HTML hoặc dữ liệu thô để trình duyệt của người dùng có thể nhận và hiển thị lên màn hình. Đây là cầu nối giữa logic xử lý của bạn và giao diện người dùng cuối.

  • Ví dụ: Khi người dùng truy cập một trang sản phẩm, PHP sẽ truy vấn thông tin sản phẩm từ cơ sở dữ liệu, sau đó hiển thị tên, giá, mô tả sản phẩm đó dưới dạng HTML để trình duyệt hiển thị.

Hiển thị kết quả xử lý, thông báo, dữ liệu từ cơ sở dữ liệu: Không chỉ là các trang web hoàn chỉnh, bạn còn cần hiển thị các thông báo quan trọng.

  • Ví dụ: "Đăng nhập thành công!", "Sản phẩm đã được thêm vào giỏ hàng!", hoặc danh sách các bài viết lấy từ database.

Hỗ trợ gỡ lỗi (debugging) chương trình: Trong quá trình phát triển, code của bạn không phải lúc nào cũng chạy đúng như mong muốn. Các lệnh hiển thị dữ liệu là công cụ vô cùng hiệu quả để bạn "nhìn vào bên trong" chương trình, kiểm tra giá trị của biến tại các thời điểm khác nhau, hoặc xác định xem một đoạn mã có được thực thi hay không. Điều này giúp bạn nhanh chóng tìm ra và khắc phục lỗi.

  • Ví dụ: Bạn có thể in ra giá trị của một biến sau mỗi bước xử lý để xem nó có đúng như dự kiến không.

Các công cụ hiển thị dữ liệu cơ bản trong PHP

PHP cung cấp một vài cách để bạn hiển thị dữ liệu. Mỗi công cụ có những đặc điểm riêng và phù hợp với các tình huống khác nhau. Trong bài viết này, chúng ta sẽ tập trung vào hai công cụ phổ biến nhất là echoprint.

echo:

  • Đây là công cụ phổ biến nhất để hiển thị dữ liệu trong PHP.
  • Nó rất nhanhlinh hoạt, cho phép bạn xuất một hoặc nhiều chuỗi cùng lúc.
  • echo là một cấu trúc ngôn ngữ, không phải là một hàm, điều này làm cho nó có hiệu suất cao hơn một chút.

print:

  • Cũng dùng để hiển thị dữ liệu, nhưng ít phổ biến hơn echo trong hầu hết các trường hợp.
  • Là một hàm, và có một đặc điểm là trả về giá trị (1 nếu thành công). Điều này đôi khi có ích khi bạn muốn sử dụng nó trong một biểu thức.

print_r():

  • Là một hàm dùng để hiển thị thông tin về các biến, đặc biệt hữu ích khi bạn muốn xem nội dung của mảng (array) hoặc đối tượng (object) một cách dễ đọc. Nó sẽ in ra cấu trúc của mảng/đối tượng một cách có định dạng.

var_dump():

  • Đây là "người bạn thân" của lập trình viên khi gỡ lỗi.
  • Nó hiển thị thông tin chi tiết nhất về một biến, bao gồm: kiểu dữ liệu, giá trị và thậm chí cả kích thước (ví dụ: số ký tự của chuỗi, số phần tử của mảng). var_dump() cung cấp thông tin cực kỳ hữu ích để bạn hiểu rõ trạng thái của biến tại một thời điểm cụ thể.

Trong các phần tiếp theo, chúng ta sẽ đi sâu vào echoprint để hiểu rõ cách sử dụng và sự khác biệt giữa chúng.

echo – Cấu trúc hiển thị dữ liệu phổ biến nhất

Khi nói đến việc hiển thị dữ liệu trong PHP, echo gần như là lựa chọn mặc định và được sử dụng rộng rãi nhất. Nó nhanh chóng và cực kỳ linh hoạt.

echo là gì?

  • echo là một cấu trúc ngôn ngữ (language construct) trong PHP, chứ không phải là một hàm thông thường. Điều này có nghĩa là nó là một phần cốt lõi được xây dựng sẵn trong ngữ pháp của PHP, tương tự như if, for, hay while. Bởi vì nó không phải là hàm, echo không có chi phí gọi hàm (function call overhead), giúp nó hoạt động hiệu quả hơn một chút.
  • Mục đích chính của echoxuất (output) một hoặc nhiều chuỗi ký tự ra màn hình (hoặc trình duyệt của người dùng khi chạy trên web server).

Cú pháp và cách sử dụng

echo cực kỳ linh hoạt trong cách bạn có thể sử dụng nó:

  • Cú pháp cơ bản: Bạn có thể dùng dấu nháy đơn (') hoặc nháy kép (") để bao quanh chuỗi bạn muốn xuất.

<?php
echo "Hello World!";  // Sử dụng nháy kép
echo 'Xin chào PHP!'; // Sử dụng nháy đơn
?>

Không cần dấu ngoặc đơn: Mặc dù bạn thường thấy echo() với dấu ngoặc đơn giống như một hàm, nhưng thực tế bạn không cần chúng khi chỉ xuất một đối số.

<?php
echo "Học lập trình PHP thật thú vị."; // Không dùng dấu ngoặc đơn
echo ("Đây cũng là cú pháp hợp lệ."); // Có thể dùng dấu ngoặc đơn
?>

Xuất nhiều chuỗi cùng lúc: Đây là một trong những điểm mạnh của echo. Bạn có thể truyền nhiều chuỗi (hoặc biến) cho echo, phân cách chúng bằng dấu phẩy (,). PHP sẽ xuất chúng ra màn hình theo thứ tự.

<?php
echo "Tên tôi là", " John", " Doe."; // Xuất 3 chuỗi riêng biệt
// Kết quả: Tên tôi là John Doe.
?>

Xuất biến: echo có thể dễ dàng hiển thị giá trị của bất kỳ biến nào.

<?php
$ten = "Alice";
$tuoi = 30;
echo $ten;   // Xuất giá trị của biến $ten
echo "<br>"; // Xuất thẻ xuống dòng HTML
echo $tuoi;  // Xuất giá trị của biến $tuoi
?>

Kết hợp chuỗi và biến: Có hai cách phổ biến để kết hợp chuỗi cố định với giá trị của biến:

  • Nối chuỗi bằng dấu chấm (.): Toán tử dấu chấm (.) dùng để ghép các chuỗi lại với nhau. Đây là cách an toàn và rõ ràng khi bạn muốn kết hợp nhiều phần.

<?php
$sanPham = "Laptop Dell";
$gia = 15000000;
echo "Sản phẩm: " . $sanPham . ", Giá: " . $gia . " VNĐ.";
// Kết quả: Sản phẩm: Laptop Dell, Giá: 15000000 VNĐ.
?>

Nội suy biến trong nháy kép: Khi bạn sử dụng dấu nháy kép ("), PHP sẽ tự động tìm kiếm và thay thế tên biến bằng giá trị của chúng bên trong chuỗi. Đây là một tính năng tiện lợi, nhưng cần cẩn thận để tránh nhầm lẫn nếu bạn có các ký tự đặc biệt gần tên biến.

<?php
$tenKhachHang = "Nguyễn Văn A";
$diaChi = "123 Đường ABC";
echo "Khách hàng: $tenKhachHang, Địa chỉ giao hàng: $diaChi.";
// Kết quả: Khách hàng: Nguyễn Văn A, Địa chỉ giao hàng: 123 Đường ABC.

// Bạn có thể dùng dấu ngoặc nhọn {} để phân biệt rõ ràng biến trong chuỗi kép, đặc biệt khi biến nằm sát ký tự khác:
echo "Giá trị là: ${gia}đ. Tên: {$sanPham}.";
?>

Đặc điểm và ưu điểm của echo

  • Không có giá trị trả về: echo thực hiện tác vụ xuất dữ liệu và không trả về bất kỳ giá trị nào sau khi hoàn thành. Điều này khác với print (sẽ được đề cập sau), hàm này trả về 1 nếu thành công.
  • Tốc độ:echo là một cấu trúc ngôn ngữ và không có giá trị trả về, nó thường nhanh hơn một chút so với print. Trong hầu hết các ứng dụng thực tế, sự khác biệt này là không đáng kể, nhưng trong các vòng lặp lớn hoặc khi cần hiệu suất tối ưu, echo có lợi thế hơn.
  • Linh hoạt: Khả năng xuất nhiều chuỗi/biến cùng lúc bằng cách phân tách chúng bằng dấu phẩy là một ưu điểm lớn, giúp code ngắn gọn và dễ đọc hơn khi bạn cần ghép nối nhiều phần dữ liệu.

Ví dụ Code minh họa các trường hợp sử dụng của echo

<?php
// 1. Xuất chuỗi đơn giản
echo "Chào mừng bạn đến với PHP cơ bản!<br>";

// 2. Xuất chuỗi và số
echo 12345;
echo "<br>";

// 3. Xuất biến
$tenNguoiDung = "Minh Anh";
$soDienThoai = "0987654321";
echo $tenNguoiDung;
echo "<br>";
echo $soDienThoai;
echo "<br>";

// 4. Nối chuỗi bằng dấu chấm (.)
$diemToan = 8.5;
$diemLy = 7.0;
echo "Điểm trung bình: " . (($diemToan + $diemLy) / 2) . "<br>";

// 5. Nội suy biến trong nháy kép
$thanhPho = "Hà Nội";
$quocGia = "Việt Nam";
echo "Thủ đô của $quocGia là $thanhPho.<br>";

// 6. Nội suy biến với dấu ngoặc nhọn {} để tránh nhầm lẫn
$tienTe = "USD";
$giaTri = 100;
echo "Bạn có {$giaTri}{$tienTe} trong tài khoản.<br>"; // Rõ ràng hơn là "$giaTriUSD"

// 7. Xuất nhiều đối số bằng dấu phẩy
$monHoc = "Lập trình Web";
$soTinChi = 3;
$giangVien = "Thầy Bình";
echo "Môn học: ", $monHoc, " - Số tín chỉ: ", $soTinChi, " - Giáo viên: ", $giangVien, ".<br>";

// 8. Kết hợp HTML trong chuỗi
$fontSize = "20px";
echo "<p style='color: blue; font-size: $fontSize;'>Đây là đoạn văn bản được tạo bằng PHP.</p>";
?>

print – Hàm hiển thị dữ liệu

Bên cạnh echo, print là một công cụ khác trong PHP dùng để hiển thị dữ liệu. Dù ít được sử dụng hơn echo trong các tình huống thông thường, print có những đặc điểm riêng mà bạn nên biết.

print là gì?

  • Không giống như echo là một cấu trúc ngôn ngữ, print là một hàm (function) trong PHP. Điều này có nghĩa là nó hoạt động giống như các hàm khác mà bạn viết hoặc sử dụng, ví dụ như strlen() hay array_push().
  • Mục đích của printxuất một chuỗi ký tự ra màn hình (hoặc trình duyệt). Nó chỉ có thể xử lý một đối số tại một thời điểm.

Cú pháp và cách sử dụng

Cú pháp của print tương tự như echo nhưng có vài điểm khác biệt quan trọng:

  • Cú pháp cơ bản: Bạn có thể sử dụng dấu nháy đơn (') hoặc nháy kép (") để bao quanh chuỗi muốn xuất.

<?php
print "Hello from print!";  // Sử dụng nháy kép
print 'Xin chào từ print!'; // Sử dụng nháy đơn
?>

Dấu ngoặc đơn: Mặc dù print là một hàm, bạn không bắt buộc phải dùng dấu ngoặc đơn khi nó chỉ có một đối số và không nằm trong một biểu thức phức tạp. Tuy nhiên, việc sử dụng ngoặc đơn có thể giúp code rõ ràng hơn, đặc biệt đối với người mới học.

<?php
print "Đây là cú pháp hợp lệ.";      // Không dùng dấu ngoặc đơn
print("Đây cũng là cú pháp hợp lệ."); // Dùng dấu ngoặc đơn
?>

Chỉ xuất MỘT chuỗi/biến mỗi lần: Đây là điểm khác biệt lớn nhất so với echo. print chỉ chấp nhận một đối số duy nhất. Bạn không thể truyền nhiều chuỗi phân cách bằng dấu phẩy.

<?php
$message = "Chỉ một đối số.";
print $message; // Hợp lệ

// print "Chuỗi 1", "Chuỗi 2"; // Lỗi cú pháp! print chỉ nhận 1 đối số.
?>

Kết hợp chuỗi và biến: Tương tự như echo, bạn dùng toán tử nối chuỗi (.) để ghép các phần lại với nhau. print cũng hỗ trợ nội suy biến khi bạn sử dụng chuỗi trong dấu nháy kép.

<?php
$tenSach = "Lập Trình PHP";
$giaSach = 250000;

// Nối chuỗi bằng dấu chấm (.)
print "Tên sách: " . $tenSach . ", Giá: " . $giaSach . " VNĐ.<br>";

// Nội suy biến trong nháy kép
print "Cuốn sách \"$tenSach\" có giá $giaSach VNĐ.<br>";
?>

Đặc điểm và ưu điểm/nhược điểm của print

Có giá trị trả về: Đây là đặc điểm nổi bật của print so với echo. print luôn trả về giá trị 1 (tương đương với true trong ngữ cảnh boolean) nếu việc xuất dữ liệu thành công, và 0 (false) nếu thất bại (trường hợp hiếm). Điều này cho phép bạn sử dụng print trong các biểu thức hoặc câu lệnh điều kiện.

<?php
// print trả về 1 (true)
if (print "Thông báo thành công!<br>") {
    echo "Lệnh print đã thực thi thành công.";
}

$result = print "Giá trị trả về là 1.<br>";
echo "Biến \$result chứa giá trị: " . $result; // Output: Biến $result chứa giá trị: 1
?>
  • Tốc độ: Vì là một hàm và có giá trị trả về, print có một chút "chi phí" xử lý (overhead) so với echo. Do đó, print thường chậm hơn echo một chút. Tuy nhiên, đối với hầu hết các ứng dụng thông thường, sự khác biệt về hiệu suất này là không đáng kể và ít khi là yếu tố quyết định.

  • Ít linh hoạt hơn: Nhược điểm chính của print là nó không thể xuất nhiều đối số cùng lúc bằng cách phân tách chúng bằng dấu phẩy như echo. Điều này khiến code của bạn có thể dài hơn một chút khi cần kết hợp nhiều phần dữ liệu rời rạc.

Ví dụ Code minh họa: Các trường hợp sử dụng của print

<?php
// 1. Xuất một chuỗi đơn giản
print "Chào mừng bạn quay lại với PHP.<br>";

// 2. Xuất giá trị của một biến
$userName = "Mai Lan";
print $userName . "<br>";

// 3. Sử dụng print trong một biểu thức (do nó trả về 1)
$loggedIn = true;
if ($loggedIn) {
    print "Bạn đã đăng nhập thành công.<br>";
} else {
    print "Vui lòng đăng nhập.<br>";
}

// Ví dụ về việc gán giá trị trả về của print vào một biến
$outputSuccess = print "Dữ liệu đã được in.<br>";
echo "Giá trị của \$outputSuccess là: " . $outputSuccess . "<br>"; // Output: Giá trị của $outputSuccess là: 1

// 4. Kết hợp chuỗi và biến với nối chuỗi
$diemKiemTra = 9.25;
print "Điểm kiểm tra của bạn là: " . $diemKiemTra . ".<br>";

// 5. Nội suy biến trong nháy kép (print cũng hỗ trợ)
$city = "Đà Nẵng";
print "Thành phố bạn đang sống là $city.<br>";

// 6. Minh họa việc print KHÔNG chấp nhận nhiều đối số
// print "Phần 1", "Phần 2", "Phần 3"; // Dòng này sẽ gây lỗi cú pháp (Parse error) nếu bỏ comment

// Để in nhiều phần với print, bạn phải nối chúng lại trước
print "Thông báo: " . "Dữ liệu được in từng phần.<br>";
?>

So Sánh echoprint trong PHP

Sau khi đã tìm hiểu chi tiết về echoprint riêng lẻ, giờ là lúc chúng ta đặt chúng lên bàn cân để thấy rõ những điểm giống và khác nhau, từ đó giúp bạn đưa ra lựa chọn phù hợp khi lập trình.

Điểm giống nhau

Mặc dù có những khác biệt, echoprint vẫn chia sẻ nhiều đặc điểm chung:

  • Đều được dùng để xuất dữ liệu ra màn hình: Đây là mục đích chính và cơ bản nhất của cả hai. Chúng đều chuyển đổi dữ liệu PHP thành chuỗi và gửi chuỗi đó đến đầu ra tiêu chuẩn (thường là trình duyệt web).
<?php
echo "Dữ liệu được xuất bởi echo.<br>";
print "Dữ liệu được xuất bởi print.<br>";
?>

Có thể dùng dấu nháy đơn (') hoặc nháy kép (") cho chuỗi: Cả hai đều chấp nhận cả hai loại dấu nháy để định nghĩa chuỗi.

<?php
echo "Sử dụng nháy kép với echo.<br>";
echo 'Sử dụng nháy đơn với echo.<br>';

print "Sử dụng nháy kép với print.<br>";
print 'Sử dụng nháy đơn với print.<br>';
?>

Hỗ trợ nội suy biến khi dùng nháy kép: Nếu bạn đặt tên biến trực tiếp vào một chuỗi được bao bởi dấu nháy kép, cả echoprint đều sẽ tự động thay thế tên biến bằng giá trị của nó.

<?php
$ten = "Quang";
$tuoi = 25;

echo "Tên: $ten, Tuổi: $tuoi (với echo).<br>";
print "Tên: $ten, Tuổi: $tuoi (với print).<br>";
?>

Điểm khác biệt chính

Đây là những yếu tố quan trọng nhất để phân biệt echoprint:

  • Kiểu:

    • echo là một cấu trúc ngôn ngữ (language construct): Nó không phải là một hàm theo đúng nghĩa đen. Điều này có nghĩa là bạn không bắt buộc phải sử dụng dấu ngoặc đơn (()) khi gọi nó, mặc dù việc dùng dấu ngoặc đơn vẫn hợp lệ và phổ biến.
    • print là một hàm (function): Nó hoạt động như một hàm thông thường. Mặc dù bạn vẫn có thể bỏ qua dấu ngoặc đơn trong một số trường hợp đơn giản, nhưng về bản chất nó vẫn là một lời gọi hàm.\
<?php
echo "Hello echo!";     // Cấu trúc ngôn ngữ, không cần ngoặc
echo("Hello echo!");    // Vẫn hợp lệ với ngoặc

print "Hello print!";   // Hàm, có thể bỏ ngoặc trong trường hợp này
print("Hello print!");  // Hàm, có ngoặc
?>

Trả về giá trị:

  • echo không trả về giá trị: Nó chỉ thực hiện hành động xuất. Vì vậy, bạn không thể sử dụng echo trong một biểu thức hoặc gán kết quả của nó vào một biến.
  • print trả về 1 (true) nếu thành công: Đây là khác biệt đáng kể. Vì print là một hàm, nó trả về một giá trị. Nếu việc xuất thành công, nó sẽ trả về số nguyên 1. Điều này cho phép bạn sử dụng print trong các biểu thức điều kiện hoặc gán kết quả của nó vào một biến.
<?php
// Với print: Có thể dùng trong biểu thức vì nó trả về 1
$ketQuaPrint = print "Đây là thông báo.<br>";
echo "Biến \$ketQuaPrint chứa giá trị: " . $ketQuaPrint . "<br>"; // Output: Biến $ketQuaPrint chứa giá trị: 1

// Với echo: KHÔNG THỂ dùng trong biểu thức, sẽ gây lỗi cú pháp (parse error)
// $ketQuaEcho = echo "Đây là thông báo.<br>"; // Lỗi!
?>

Số lượng đối số:

  • echo có thể nhận nhiều đối số: Bạn có thể truyền nhiều chuỗi hoặc biến cho echo, phân cách chúng bằng dấu phẩy (,). PHP sẽ xuất chúng theo thứ tự. Điều này giúp code gọn gàng khi bạn cần ghép nhiều phần.
  • print chỉ nhận một đối số: print chỉ có thể xử lý một chuỗi hoặc một biến tại một thời điểm. Nếu bạn cần xuất nhiều phần, bạn phải nối chúng lại bằng toán tử dấu chấm (.) trước khi truyền cho print.
<?php
// echo có thể nhận nhiều đối số:
$ten = "An";
$monHoc = "Toán";
$diem = 9;
echo "Học sinh: ", $ten, ", Môn: ", $monHoc, ", Điểm: ", $diem, ".<br>";

// print chỉ nhận một đối số:
print "Học sinh: " . $ten . ", Môn: " . $monHoc . ", Điểm: " . $diem . ".<br>";
// print "Học sinh: ", $ten; // Lỗi cú pháp!
?>

Tốc độ:

  • echo nhanh hơn một chút: Do echo là một cấu trúc ngôn ngữ và không có giá trị trả về, nó có hiệu suất nhỉnh hơn print một chút vì không có chi phí liên quan đến việc gọi hàm và xử lý giá trị trả về. Tuy nhiên, sự khác biệt này là rất nhỏ và hầu như không đáng kể trong hầu hết các ứng dụng web thông thường. Nó chỉ có thể trở nên rõ rệt trong các tác vụ xuất dữ liệu cực kỳ lớn hoặc trong các vòng lặp hàng triệu lần.

Khi nào sử dụng cái nào?

Dựa trên những điểm khác biệt trên, bạn có thể đưa ra lựa chọn phù hợp:

  • Sử dụng echo làm mặc định: Trong hầu hết các trường hợp, echo là lựa chọn được ưu tiên và khuyến nghị.

    • nhanh hơn (mặc dù chỉ một chút).
    • linh hoạt hơn khi bạn cần xuất nhiều đối số, giúp code của bạn gọn gàng và dễ đọc hơn (ví dụ: echo $var1, " ", $var2;).
  • Chỉ sử dụng print khi bạn cần giá trị trả về của nó trong một biểu thức: Đây là trường hợp sử dụng chính và gần như duy nhất mà print có lợi thế hơn echo. Tuy nhiên, tình huống này khá hiếm trong thực tế lập trình web thông thường.

    • Ví dụ: Bạn có thể thấy print được dùng trong các biểu thức ngắn gọn, như trong một số template engine hoặc trong các trường hợp bạn muốn kiểm tra xem việc in có thành công hay không (mặc dù ít khi cần kiểm tra như vậy).
<?php
// Ví dụ hiếm khi dùng print trong biểu thức
$canPrint = true;
($canPrint AND print("Dữ liệu được in bởi print trong điều kiện AND.")) ? null : null;
?>

Ví dụ tổng hợp và thực tiễn tốt trong PHP

Để củng cố kiến thức về echoprint, chúng ta sẽ xem xét một ví dụ tổng hợp và sau đó đi sâu vào những thực tiễn tốt nhất khi hiển thị dữ liệu trong PHP.

Đoạn code minh họa chung

Ví dụ này sẽ trình bày cách sử dụng cả echoprint để hiển thị các loại dữ liệu khác nhau, đồng thời minh họa việc nối chuỗi và nội suy biến.

<?php
// Khai báo một số biến để sử dụng
$tenSanPham = "Smart TV 4K";
$gia = 12500000; // Giá tiền Việt Nam Đồng
$soLuongTon = 5;
$isAvailable = true; // Biến boolean

echo "<h1>Chào mừng đến với cửa hàng điện tử!</h1>";
echo "<hr>"; // Dùng echo để in thẻ HTML

// --- Sử dụng echo ---
echo "<h2>Sử dụng echo:</h2>";

// Xuất chuỗi đơn giản
echo "Thông tin sản phẩm:<br>";

// Xuất biến
echo "Tên sản phẩm: " . $tenSanPham . "<br>"; // Nối chuỗi bằng dấu chấm
echo "Giá: " . $gia . " VNĐ<br>";

// Nội suy biến trong nháy kép (chỉ với nháy kép)
echo "Sản phẩm \"$tenSanPham\" hiện có $soLuongTon chiếc trong kho.<br>";

// Xuất nhiều đối số bằng dấu phẩy
echo "Trạng thái: ", ($isAvailable ? "Còn hàng" : "Hết hàng"), " - ID sản phẩm: ", 12345, ".<br>";

echo "<hr>";

// --- Sử dụng print ---
echo "<h2>Sử dụng print:</h2>";

// Xuất chuỗi đơn giản
print "Chi tiết đơn hàng:<br>";

// Xuất biến (chỉ một đối số)
print "Sản phẩm đã chọn: " . $tenSanPham . "<br>"; // Vẫn phải nối chuỗi

// Nội suy biến trong nháy kép (print cũng hỗ trợ)
print "Tổng tiền dự kiến: " . ($gia * $soLuongTon) . " VNĐ.<br>"; // Phải nối biểu thức

// Ví dụ print trong một biểu thức (trả về 1)
$thongBaoThanhCong = "Đơn hàng đã được ghi nhận!";
if (print $thongBaoThanhCong . "<br>") {
    echo "<em>Thông báo trên đã được hiển thị thành công.</em><br>";
}

echo "<hr>";

// --- Minh họa sự khác biệt khi dùng nhiều đối số ---
echo "<h2>Minh họa điểm khác biệt:</h2>";

// Với echo (linh hoạt):
echo "Dữ liệu 1", " - ", "Dữ liệu 2", " - ", $tenSanPham, ".<br>";

// Với print (không linh hoạt như echo, phải nối chuỗi):
print "Dữ liệu 1" . " - " . "Dữ liệu 2" . " - " . $tenSanPham . ".<br>";

?>

Kết bài

Vậy là chúng ta đã cùng nhau khám phá hai trong số những công cụ cơ bản và quan trọng nhất trong PHP để đưa dữ liệu ra thế giới bên ngoài: echoprint. Dù có chung mục đích, việc hiểu rõ sự khác biệt tinh tế giữa một cấu trúc ngôn ngữ không trả về giá trị (echo) và một hàm có trả về giá trị (print) là rất cần thiết.

Trong hầu hết các trường hợp, echo sẽ là lựa chọn tối ưu nhờ tốc độ và khả năng linh hoạt khi xử lý nhiều đối số. print vẫn có chỗ đứng của nó, nhưng thường chỉ khi bạn cần tận dụng giá trị trả về của nó trong một biểu thức.

Hơn cả việc chỉ biết cách dùng, việc áp dụng các thực tiễn tốt như luôn thoát dữ liệu người dùng bằng htmlspecialchars() để chống XSS, và sử dụng print_r() hay var_dump() cho mục đích gỡ lỗi, sẽ giúp code của bạn không chỉ hoạt động đúng mà còn an toàn và dễ bảo trì hơn rất nhiều.

Bài viết liên quan