Giới thiệu về biến số trong PHP

Bạn đã bao giờ thắc mắc biến trong PHP là gì và tại sao nó quan trọng không? Khi bạn bắt đầu học lập trình PHP, biến chính là một trong những khái niệm đầu tiên bạn cần nắm vững. Biến giữ vai trò gì trong việc lưu trữ và xử lý dữ liệu khi lập trình? Hãy tưởng tượng biến như những chiếc hộp nhỏ, mỗi chiếc hộp có thể chứa một loại thông tin khác nhau – từ số, chữ đến những dữ liệu phức tạp hơn.
Bài viết này sẽ giải thích chi tiết khái niệm biến và hướng dẫn bạn cách sử dụng biến đúng chuẩn trong PHP. Không chỉ dừng lại ở lý thuyết, chúng ta sẽ đi sâu vào những ví dụ thực tế giúp bạn hiểu rõ cách áp dụng trong các dự án website thực tế.
Chúng ta sẽ lần lượt khám phá: khai báo biến, quy tắc đặt tên, kiểu dữ liệu, phạm vi biến, biến động, biến siêu toàn cục và các toán tử liên quan. Mỗi phần đều có những mẹo hay và kinh nghiệm thực tế mà tôi đã tích lũy qua nhiều năm làm việc với PHP.
Khái niệm và khai báo biến trong PHP

Biến là gì và vai trò trong lập trình PHP
Biến là nơi lưu trữ dữ liệu tạm thời trong bộ nhớ khi chương trình chạy. Hãy nghĩ đến biến như những chiếc nhãn dán trên các hộp đựng đồ trong kho. Mỗi nhãn sẽ giúp bạn biết hộp đó chứa gì và có thể thay đổi nội dung bất cứ lúc nào.
Biến giúp bạn tái sử dụng và thao tác với dữ liệu dễ dàng. Thay vì phải nhớ và gõ lại những giá trị phức tạp, bạn chỉ cần gọi tên biến. Điều này không chỉ tiết kiệm thời gian mà còn giảm thiểu lỗi khi viết code.
Ví dụ, thay vì viết echo "Xin chào Bùi Mạnh Đức";
nhiều lần, bạn có thể tạo biến $ten = "Bùi Mạnh Đức";
rồi sử dụng echo "Xin chào " . $ten;
ở bất cứ đâu cần thiết.
Cách khai báo biến và quy tắc đặt tên biến chuẩn
Biến trong PHP bắt đầu bằng ký tự $
. Ví dụ: $ten
, $tuoi
, $dia_chi
. Đây là điều đầu tiên bạn cần nhớ khi làm việc với PHP – không có dấu $
thì đó không phải là biến.
Quy tắc đặt tên biến cần tuân thủ nghiêm ngặt: tên biến không được bắt đầu bằng số, không chứa ký tự đặc biệt (trừ dấu gạch dưới), và PHP phân biệt chữ hoa/thường. Điều này có nghĩa là $Ten
và $ten
là hai biến khác nhau hoàn toàn.
Mẹo đặt tên rõ nghĩa, dễ hiểu để code sạch và dễ bảo trì. Thay vì đặt tên $x
, $y
, hãy sử dụng $so_luong_san_pham
, $gia_tri_don_hang
. Điều này giúp bạn và đồng nghiệp dễ dàng hiểu code sau này. Tôi thường khuyên các bạn học viên sử dụng tiếng Việt không dấu hoặc tiếng Anh cho tên biến, tránh sử dụng tiếng Việt có dấu để không gặp vấn đề encoding.
Kiểu dữ liệu và cách gán giá trị cho biến

Các kiểu dữ liệu phổ biến
PHP hỗ trợ nhiều kiểu dữ liệu khác nhau, mỗi kiểu phục vụ một mục đích cụ thể. Hiểu rõ từng kiểu sẽ giúp bạn chọn đúng công cụ cho đúng việc.
Kiểu số nguyên (integer) dùng để lưu các số không có phần thập phân: $tuoi = 25;
. Kiểu số thực (float) cho những số có phần thập phân: $gia = 99.99;
. Kiểu chuỗi (string) lưu văn bản: $ho_ten = "Bùi Mạnh Đức";
.
Kiểu boolean chỉ có hai giá trị true hoặc false: $da_dang_nhap = true;
. Kiểu mảng (array) lưu nhiều giá trị: $danh_sach = array("PHP", "JavaScript", "Python");
. Kiểu đối tượng (object) phức tạp hơn, thường dùng trong lập trình hướng đối tượng. Cuối cùng là null – đại diện cho “không có giá trị”: $du_lieu = null;
.
Thú vị là PHP tự động xác định kiểu dữ liệu dựa trên giá trị bạn gán. Bạn không cần phải khai báo kiểu như một số ngôn ngữ khác, điều này làm PHP trở nên linh hoạt và dễ sử dụng cho người mới bắt đầu.
Gán giá trị và sử dụng biến
Cách gán giá trị cho biến trong PHP rất đơn giản với toán tử =
. Ví dụ: $a = 10;
hoặc $name = "PHP";
. Lưu ý rằng dấu =
ở đây có nghĩa là “gán” chứ không phải “bằng” như trong toán học.
Biến có thể thay đổi giá trị bất kỳ lúc nào trong chương trình. Điều này rất hữu ích khi bạn cần cập nhật thông tin. Ví dụ: $so_luong = 5; $so_luong = $so_luong + 3;
– giờ $so_luong
sẽ có giá trị là 8.
Bạn cũng có thể gán giá trị của một biến cho biến khác: $gia_goc = 100; $gia_ban = $gia_goc;
. Khi đó cả hai biến sẽ có cùng giá trị, nhưng vẫn độc lập với nhau. Thay đổi một biến không ảnh hưởng đến biến kia.
Phạm vi của biến và biến biến động trong PHP

Sự khác biệt giữa biến toàn cục và biến cục bộ
Phạm vi biến (variable scope) quyết định nơi bạn có thể sử dụng biến trong code. Biến toàn cục tồn tại ngoài hàm và có thể được truy cập từ bất cứ đâu trong file PHP. Biến cục bộ chỉ tồn tại trong phạm vi hàm được khai báo.
Cách sử dụng từ khóa global
để truy cập biến toàn cục trong hàm. Ví dụ: function hien_thi() { global $ten; echo $ten; }
. Tuy nhiên, việc lạm dụng biến toàn cục có thể làm code khó bảo trì và debug.
Tôi khuyên bạn nên ưu tiên sử dụng tham số hàm thay vì biến toàn cục. Thay vì dùng global
, hãy truyền giá trị vào hàm: function hien_thi($ten) { echo $ten; }
. Cách này an toàn hơn và code dễ hiểu hơn.
Biến biến động (Variable Variables) và cách sử dụng
Khái niệm biến biến động cho phép tên biến được tạo động từ giá trị biến khác. Đây là tính năng độc đáo của PHP, tuy mạnh mẽ nhưng cần sử dụng cẩn thận.
Ví dụ thực tế: $ten_bien = "tuoi"; $$ten_bien = 25;
. Kết quả là bạn đã tạo ra biến $tuoi
với giá trị 25. Điều này hữu ích khi bạn cần tạo nhiều biến có tên tương tự từ dữ liệu động.
Tuy nhiên, biến biến động có thể làm code khó đọc và debug. Tôi khuyên chỉ sử dụng khi thực sự cần thiết và luôn có comment giải thích rõ ràng. Trong hầu hết trường hợp, mảng sẽ là lựa chọn tốt hơn biến biến động.
Biến siêu toàn cục và các toán tử liên quan đến biến

Các biến siêu toàn cục ($_GET, $_POST, $_SESSION, $_COOKIE, v.v.)
Biến siêu toàn cục (superglobal) là những biến đặc biệt có thể truy cập từ bất cứ đâu mà không cần dùng global
. Chúng rất quan trọng trong việc xây dựng website động và tương tác với người dùng.
$_GET
chứa dữ liệu từ URL, $_POST
chứa dữ liệu từ form HTML. $_SESSION
lưu thông tin phiên làm việc của người dùng, $_COOKIE
chứa các cookie đã được đặt. $_SERVER
cung cấp thông tin về server và môi trường thực thi.
Lưu ý bảo mật khi lấy dữ liệu từ các biến này. Không bao giờ tin tưởng hoàn toàn dữ liệu từ người dùng. Luôn kiểm tra và lọc dữ liệu trước khi sử dụng: $ten = htmlspecialchars($_POST['ten']);
. Điều này giúp tránh các cuộc tấn công như XSS.
Toán tử liên quan đến biến: gán, so sánh, nối chuỗi
Toán tử gán =
đã quen thuộc, nhưng PHP còn có nhiều toán tử hữu ích khác. Toán tử so sánh ==
kiểm tra giá trị bằng nhau, ===
kiểm tra cả giá trị lẫn kiểu dữ liệu. Sự khác biệt này rất quan trọng: 5 == "5"
trả về true, nhưng 5 === "5"
trả về false.
Toán tử nối chuỗi .
giúp ghép các chuỗi với nhau: $ho_ten = $ho . " " . $ten;
. Bạn cũng có thể dùng toán tử gán kết hợp như +=
, -=
, .=
để rút gọn code: $tong += 5;
tương đương $tong = $tong + 5;
.
Ví dụ minh họa sử dụng các toán tử này trong thực tế: khi xây dựng form đăng ký, bạn có thể dùng $thong_bao = "Xin chào " . $_POST['ten'] . "!";
để tạo thông báo cá nhân hóa cho người dùng. Xem thêm hướng dẫn chi tiết về toán tử trong PHP tương tự như trong Python để hiểu sâu hơn.
Sử dụng biến trong cấu trúc điều khiển và hàm PHP

Biến trong các cấu trúc điều khiển
Cách dùng biến trong câu lệnh if giúp tạo ra logic linh hoạt cho chương trình. Ví dụ: if ($tuoi >= 18) { echo "Đã đủ tuổi"; }
. Biến làm cho điều kiện trở nên động và có thể thay đổi theo dữ liệu đầu vào.
Trong vòng lặp for, biến đóng vai trò điều khiển số lần lặp: for ($i = 0; $i < $so_luong; $i++)
. Vòng lặp foreach đặc biệt hữu ích khi làm việc với mảng: foreach ($danh_sach as $phan_tu)
. Điều này giúp xử lý từng phần tử mà không cần biết trước số lượng.
Khi xây dựng website, bạn thường cần hiển thị danh sách bài viết, sản phẩm. Việc sử dụng biến trong foreach giúp tạo ra HTML động: foreach ($bai_viet as $bai) { echo "<h2>" . $bai['tieu_de'] . "</h2>"; }
.
Để hiểu kỹ hơn về vòng lặp, bạn có thể tham khảo bài viết Vòng lặp trong Python để thấy cách các vòng lặp for, while được áp dụng trong ngôn ngữ lập trình khác.
Biến trong hàm và chuyển đổi kiểu dữ liệu
Truyền biến vào hàm giúp tái sử dụng code hiệu quả. Bạn có thể truyền theo giá trị hoặc theo tham chiếu. Truyền theo giá trị tạo bản sao, truyền theo tham chiếu (&
) cho phép hàm thay đổi biến gốc.
Chuyển đổi kiểu dữ liệu khi cần thiết để tránh lỗi logic. PHP tự động chuyển đổi trong nhiều trường hợp, nhưng đôi khi bạn cần chuyển đổi rõ ràng: $so = (int)$_POST['tuoi'];
đảm bảo bạn nhận được số nguyên từ form.
Trong các dự án thực tế, tôi thường tạo các hàm utility để xử lý và validate dữ liệu: function lam_sach_chuoi($chuoi) { return trim(htmlspecialchars($chuoi)); }
. Điều này giúp code sạch hơn và tái sử dụng được nhiều nơi. Bạn cũng có thể tham khảo hàm trong Python để thấy cách tổ chức và tối ưu hàm trong một ngôn ngữ lập trình khác.
Các lỗi thường gặp và cách khắc phục

Lỗi phạm vi biến dẫn đến biến không xác định
Một trong những lỗi phổ biến nhất khi học PHP là "Undefined variable". Lỗi này thường xảy ra khi bạn cố gắng sử dụng biến chưa được khai báo hoặc nằm ngoài phạm vi.
Nguyên nhân phổ biến và giải pháp dùng global
hoặc tham số hàm. Thay vì để biến "lơ lửng", hãy luôn khởi tạo giá trị mặc định: $dem = 0;
trước khi sử dụng trong vòng lặp.
Cách tốt nhất là sử dụng hàm isset()
để kiểm tra biến tồn tại trước khi dùng: if (isset($_POST['ten'])) { $ten = $_POST['ten']; }
. Điều này giúp tránh lỗi và làm code ổn định hơn.
Lỗi khi sử dụng biến biến động không hợp lệ
Kiểm tra biến tồn tại trước khi sử dụng để tránh lỗi PHP. Với biến biến động, bạn nên kiểm tra cả tên biến và giá trị: if (isset($$ten_bien) && !empty($$ten_bien))
.
Sử dụng var_dump()
để debug và xem giá trị thực của biến. Công cụ này giúp bạn hiểu chính xác biến chứa gì và kiểu dữ liệu là gì. Đây là kỹ năng debug cơ bản nhưng rất quan trọng.
Best Practices khi sử dụng biến trong PHP

Luôn đặt tên biến rõ ràng và tuân thủ quy tắc chuẩn. Tên biến tốt giúp code tự document chính nó. Thay vì $d
, hãy dùng $ngay_het_han
. Thay vì $u
, hãy dùng $thong_tin_nguoi_dung
.
Tránh dùng biến toàn cục không cần thiết, ưu tiên biến cục bộ. Biến toàn cục có thể được thay đổi từ bất cứ đâu, gây khó debug. Hãy truyền dữ liệu qua tham số hàm để code rõ ràng và an toàn hơn.
Giữ an toàn dữ liệu khi dùng biến siêu toàn cục, luôn validate và sanitize đầu vào. Đây là nguyên tắc bảo mật cơ bản: không tin tưởng dữ liệu từ bên ngoài. Sử dụng các hàm như filter_var()
, htmlspecialchars()
để làm sạch dữ liệu.
Sử dụng biến biến động một cách cẩn trọng để giữ code dễ đọc và bảo trì. Trong hầu hết trường hợp, mảng hoặc object sẽ là lựa chọn tốt hơn biến biến động.
Áp dụng chuyển đổi kiểu dữ liệu rõ ràng để tránh lỗi ngầm. Đặc biệt quan trọng khi làm việc với dữ liệu từ form hoặc database: $gia = (float)$_POST['gia'];
đảm bảo bạn có được số thực.
Kết luận

Biến là nền tảng quan trọng trong lập trình PHP, giúp lưu trữ và xử lý dữ liệu linh hoạt. Từ những biến đơn giản chứa tên, tuổi cho đến những biến phức tạp chứa mảng dữ liệu và đối tượng, tất cả đều đóng vai trò thiết yếu trong việc xây dựng website động.
Hiểu rõ cách khai báo, phạm vi, kiểu dữ liệu và các loại biến đặc biệt giúp bạn viết code hiệu quả hơn. Kiến thức về biến không chỉ dừng lại ở lý thuyết mà cần được áp dụng thường xuyên trong các dự án thực tế để trở thành phản xạ tự nhiên.
Đừng ngần ngại thử nghiệm và áp dụng các best practice để nâng cao kỹ năng PHP của bạn. Hãy bắt đầu với những ví dụ đơn giản, sau đó dần dần thử nghiệm với các tình huống phức tạp hơn. Mỗi lần gặp lỗi cũng là cơ hội học hỏi và cải thiện kỹ năng debug.
Hãy tiếp tục khám phá sâu hơn các chủ đề PHP cùng BÙI MẠNH ĐỨC qua các bài viết tiếp theo nhé! Từ biến, chúng ta sẽ chuyển sang các chủ đề nâng cao khác như mảng, hàm, lập trình hướng đối tượng và xây dựng ứng dụng web hoàn chỉnh.
Chia sẻ Tài liệu học PHP