Khi bắt đầu học lập trình PHP, khái niệm đầu tiên bạn cần nắm vững chính là biến trong PHP. Biến giống như “cái hộp” giúp bạn lưu trữ dữ liệu tạm thời trong quá trình chương trình chạy – từ tên người dùng, điểm số, giá sản phẩm cho đến thông tin phức tạp hơn. Hiểu rõ cách khai báo biến và các kiểu dữ liệu sẽ giúp bạn xây dựng nền tảng vững chắc cho mọi chương trình PHP sau này.
1. Biến trong PHP là gì?
Biến (Variable) là một vùng nhớ có tên, dùng để lưu trữ dữ liệu tạm thời trong chương trình. Bạn có thể hình dung biến như một cái hộp có nhãn, trong đó:
- ✅ Tên biến là nhãn dán trên hộp (để nhận biết)
- ✅ Giá trị là nội dung bên trong hộp (dữ liệu)
- ✅ Kiểu dữ liệu là loại đồ vật trong hộp (số, chữ, true/false…)
1.1. Cú pháp khai báo biến
Trong PHP, mọi biến đều bắt đầu bằng dấu $:
<?php
// Cú pháp: $ten_bien = gia_tri;
$ten = "Nguyễn Văn A"; // Biến lưu tên (chuỗi)
$tuoi = 20; // Biến lưu tuổi (số nguyên)
$diem_tb = 8.5; // Biến lưu điểm (số thực)
$da_dat = true; // Biến lưu trạng thái (true/false)
?>💡 Lưu ý: PHP không yêu cầu khai báo kiểu dữ liệu trước (khác với Java, C++). PHP tự động nhận diện kiểu dữ liệu dựa vào giá trị bạn gán.
1.2. Quy tắc đặt tên biến
Bắt buộc:
- ✅ Bắt đầu bằng dấu
$ - ✅ Sau
$phải là chữ cái hoặc dấu gạch dưới_ - ✅ Có thể chứa chữ cái, số, dấu gạch dưới
- ✅ Phân biệt hoa thường:
$name≠$Name
Không được:
- ❌ Bắt đầu bằng số:
$1bien - ❌ Có ký tự đặc biệt:
$ho-ten,$tên@ - ❌ Có khoảng trắng:
$ho ten - ❌ Dùng từ khóa PHP:
$if,$echo,$class
Ví dụ tên biến hợp lệ:
<?php
$ten_sinh_vien = "An"; // ✅ Dùng snake_case
$diemToan = 9.0; // ✅ Dùng camelCase
$_private = "data"; // ✅ Bắt đầu bằng _
$HANG_SO = 100; // ✅ Hằng số viết hoa
$sv2024 = "Khóa mới"; // ✅ Có số ở giữa/cuối
// ❌ Sai
// $2sv = "Lỗi"; // Bắt đầu bằng số
// $ho-ten = "Lỗi"; // Có dấu gạch ngang
?>2. Các kiểu dữ liệu trong PHP
PHP hỗ trợ 8 kiểu dữ liệu cơ bản, chia làm 3 nhóm chính:
2.1. Kiểu dữ liệu vô hướng (Scalar)
A. String (Chuỗi)
Dùng để lưu văn bản, có thể dùng dấu nháy đơn '...' hoặc nháy kép "...":
<?php
$ten = "Trần Thị B";
$dia_chi = 'Hà Nội';
$mo_ta = "Sinh viên năm 2, học PHP";
// Nháy kép: Có thể chèn biến
$chao = "Xin chào, $ten!";
echo $chao; // Kết quả: Xin chào, Trần Thị B!
// Nháy đơn: Không xử lý biến
$chao2 = 'Xin chào, $ten!';
echo $chao2; // Kết quả: Xin chào, $ten!
?>B. Integer (Số nguyên)
Số không có phần thập phân:
<?php
$tuoi = 21;
$so_sv = 150;
$am = -50;
$lon = 1000000;
// Kiểm tra kiểu
var_dump($tuoi); // int(21)
?>C. Float/Double (Số thực)
Số có phần thập phân:
<?php
$diem = 8.75;
$gia = 99.99;
$pi = 3.14159;
$khoa_hoc = 1.5e3; // 1.5 x 10^3 = 1500
var_dump($diem); // float(8.75)
?>D. Boolean (Luận lý)
Chỉ có 2 giá trị: true hoặc false:
<?php
$da_dang_nhap = true;
$co_loi = false;
if ($da_dang_nhap) {
echo "Chào mừng trở lại!";
}
// Các giá trị tương đương false:
// 0, 0.0, "", "0", null, [], false
?>2.2. Kiểu dữ liệu phức hợp (Compound)
E. Array (Mảng)
Lưu nhiều giá trị trong một biến:
<?php
// Mảng indexed (chỉ số tự động)
$mon_hoc = ["PHP", "JavaScript", "MySQL"];
echo $mon_hoc[0]; // PHP
// Mảng associative (key-value)
$sinh_vien = [
"ten" => "Lê Văn C",
"tuoi" => 19,
"diem" => 7.5
];
echo $sinh_vien["ten"]; // Lê Văn C
?>F. Object (Đối tượng)
Dữ liệu theo mô hình OOP (học ở bài 13):
<?php
class SinhVien {
public $ten;
public $tuoi;
}
$sv = new SinhVien();
$sv->ten = "Phạm Thị D";
$sv->tuoi = 20;
echo $sv->ten; // Phạm Thị D
?>2.3. Kiểu đặc biệt (Special)
G. NULL
Biến không có giá trị:
<?php
$rong = null;
$chua_gan;
var_dump($rong); // NULL
var_dump($chua_gan); // NULL (biến chưa khởi tạo)
?>H. Resource
Tham chiếu đến tài nguyên bên ngoài (file, database):
<?php
$file = fopen("data.txt", "r");
var_dump($file); // resource(3) of type (stream)
fclose($file);
?>3. Kiểm tra và chuyển đổi kiểu dữ liệu
3.1. Kiểm tra kiểu dữ liệu
<?php
$so = 100;
$chu = "Hello";
// Hàm var_dump() - Hiển thị kiểu và giá trị
var_dump($so); // int(100)
var_dump($chu); // string(5) "Hello"
// Hàm gettype() - Trả về tên kiểu
echo gettype($so); // integer
echo gettype($chu); // string
// Hàm is_*() - Kiểm tra kiểu cụ thể
var_dump(is_int($so)); // bool(true)
var_dump(is_string($so)); // bool(false)
var_dump(is_float(3.14)); // bool(true)
var_dump(is_bool(true)); // bool(true)
var_dump(is_array([1,2])); // bool(true)
?>3.2. Chuyển đổi kiểu dữ liệu
Cách 1: Ép kiểu tường minh (Type Casting)
<?php
$chuoi = "123";
$so = (int)$chuoi; // Ép thành số nguyên
var_dump($so); // int(123)
$thuc = (float)"45.67";
var_dump($thuc); // float(45.67)
$bool = (bool)1;
var_dump($bool); // bool(true)
$mang = (array)"text";
var_dump($mang); // array(1) { [0]=> string(4) "text" }
?>Cách 2: Dùng hàm chuyển đổi
<?php
$chuoi = "789";
$so = intval($chuoi); // Thành integer
$thuc = floatval($chuoi); // Thành float
$chu = strval(456); // Thành string
echo $so; // 789 (kiểu int)
echo $thuc; // 789.0 (kiểu float)
echo $chu; // "456" (kiểu string)
?>⚠️ Lưu ý: Chuyển đổi không hợp lệ có thể cho kết quả sai:
(int)"abc"→ 0
(int)"10abc"→ 10
(bool)""→ false
(bool)"0"→ false
4. Phạm vi biến (Variable Scope)
Phạm vi biến (scope) quyết định nơi biến có thể được truy cập trong code.
4.1. Biến toàn cục (Global)
Khai báo ngoài hàm, truy cập ở mọi nơi (trừ trong hàm):
<?php
$bien_toan_cuc = "Tôi là global";
function hienThi() {
// ❌ Không thể dùng trực tiếp
// echo $bien_toan_cuc; // Lỗi!
// ✅ Phải dùng từ khóa global
global $bien_toan_cuc;
echo $bien_toan_cuc; // OK
}
hienThi();
?>4.2. Biến cục bộ (Local)
Khai báo trong hàm, chỉ dùng được trong hàm đó:
<?php
function tinhTong() {
$a = 10; // Biến cục bộ
$b = 20; // Biến cục bộ
$tong = $a + $b;
echo $tong; // 30
}
tinhTong();
// ❌ Không truy cập được từ ngoài
// echo $a; // Lỗi: Undefined variable
?>4.3. Biến tĩnh (Static)
Giữ giá trị giữa các lần gọi hàm:
<?php
function demSo() {
static $dem = 0; // Chỉ khởi tạo 1 lần
$dem++;
echo $dem . " ";
}
demSo(); // 1
demSo(); // 2
demSo(); // 3
// Biến $dem giữ giá trị sau mỗi lần gọi
?>4.4. Biến siêu toàn cục (Superglobals)
PHP cung cấp sẵn các biến toàn cục đặc biệt:
<?php
// $_GET - Dữ liệu từ URL
// $_POST - Dữ liệu từ form
// $_SESSION - Lưu session
// $_COOKIE - Lưu cookie
// $_SERVER - Thông tin server
// $_FILES - File upload
// Ví dụ: Lấy thông tin server
echo $_SERVER['HTTP_HOST']; // localhost
echo $_SERVER['REQUEST_METHOD']; // GET hoặc POST
?>5. Hằng số (Constants)
Hằng số là biến đặc biệt có giá trị không thay đổi sau khi khai báo:
<?php
// Cách 1: Hàm define()
define("TEN_TRUONG", "ĐH Bách Khoa");
define("SO_SV_TOI_DA", 1000);
echo TEN_TRUONG; // ĐH Bách Khoa
echo SO_SV_TOI_DA; // 1000
// Cách 2: Từ khóa const (PHP 5.3+)
const PI = 3.14159;
const WEBSITE = "laptrinhkhongkho.com";
echo PI; // 3.14159
echo WEBSITE; // laptrinhkhongkho.com
// ❌ Không thể thay đổi
// PI = 3.14; // Lỗi!
?>💡 Quy ước: Tên hằng số thường viết HOA, dùng dấu gạch dưới phân tách từ.
6. Biến biến (Variable Variables)
Dùng giá trị của biến này làm tên biến khác:
<?php
$ten = "tuoi";
$$ten = 21; // Tạo biến $tuoi = 21
echo $tuoi; // 21
echo $$ten; // 21 (giống $tuoi)
// Ví dụ thực tế
$loai = "diem_toan";
$$loai = 9.0;
echo $diem_toan; // 9.0
?>7. So sánh biến: == vs ===
PHP có 2 cách so sánh:
<?php
$a = 10;
$b = "10";
// == So sánh giá trị (tự động chuyển kiểu)
var_dump($a == $b); // bool(true)
// === So sánh giá trị VÀ kiểu dữ liệu
var_dump($a === $b); // bool(false)
// Ví dụ khác
$x = 0;
$y = false;
var_dump($x == $y); // true (0 tương đương false)
var_dump($x === $y); // false (int ≠ bool)
?>💡 Khuyến nghị: Dùng
===để tránh lỗi logic do chuyển kiểu tự động.
Tóm tắt
Qua bài này bạn đã nắm được:
- ✅ Biến trong PHP là vùng nhớ lưu trữ dữ liệu, bắt đầu bằng
$ - ✅ Quy tắc đặt tên: Chữ cái/gạch dưới đầu, phân biệt hoa thường, không dùng từ khóa
- ✅ 8 kiểu dữ liệu: String, Integer, Float, Boolean, Array, Object, NULL, Resource
- ✅ Kiểm tra kiểu:
var_dump(),gettype(),is_int() - ✅ Chuyển đổi kiểu:
(int),(float),intval(),floatval() - ✅ Phạm vi biến: Global, Local, Static, Superglobals
- ✅ Hằng số:
define()hoặcconst, không đổi giá trị - ✅ So sánh:
==(giá trị) vs===(giá trị + kiểu)
Bài tiếp theo, bạn sẽ học về toán tử trong PHP để thực hiện các phép tính và xử lý logic.
🎯 Bài tập thực hành
- Bài 1: Khai báo các biến lưu thông tin sách: tên sách, tác giả, giá (số thực), số trang (số nguyên). In ra màn hình đầy đủ thông tin.
- Bài 2: Tạo 2 biến
$a = "100"và$b = 50. Chuyển$athành số nguyên, tính tổng và in kết quả. - Bài 3: Viết code kiểm tra biến
$diem = 7.5có phải kiểu float không. In ra “Đúng” hoặc “Sai”.
Gợi ý Bài 1:
<?php
$ten_sach = "Lập trình PHP căn bản";
$tac_gia = "Nguyễn Văn A";
$gia = 199.5;
$so_trang = 350;
echo "<h3>Thông tin sách</h3>";
echo "Tên: $ten_sach<br>";
echo "Tác giả: $tac_gia<br>";
echo "Giá: " . number_format($gia, 0, ',', '.') . " VNĐ<br>";
echo "Số trang: $so_trang<br>";
?>Gợi ý Bài 2:
<?php
$a = "100";
$b = 50;
$a = (int)$a; // Hoặc: $a = intval($a);
$tong = $a + $b;
echo "Tổng: $tong"; // 150
?>Gợi ý Bài 3:
<?php
$diem = 7.5;
if (is_float($diem)) {
echo "Đúng";
} else {
echo "Sai";
}
?>