Bài 5. Các phép toán

Phép toán là nền của mọi tính toán và điều kiện. Bài này hệ thống phép toán số học, gán, so sánh, logic, chuỗi, mảng, các toán tử đặc biệt của PHP (?:, ??, <=>, **) và thứ tự ưu tiên.

35 phútCơ bản
Bạn sẽ học được
  • Dùng phép toán số học, gán kết hợp, tăng giảm
  • Dùng phép so sánh và logic trong điều kiện
  • Dùng toán tử ba ngôi, ?? và <=>
  • Hiểu thứ tự ưu tiên và dùng ngoặc

Khái niệm và lý thuyết

NhómToán tử
Số học+ - * / % ** (lũy thừa) intdiv()
Gán= += -= *= /= .= %= ??=
Tăng giảm++$a $a++ --$a $a--
So sánh== != === !== < > <= >= <=>
Logic&& (and) || (or) ! (not) xor
Chuỗi. (nối) .=
Mảng+ (hợp) == ===
Điều kiện?: ?? ?->

Thứ tự ưu tiên từ cao xuống thấp: ** → ++ -- ! → * / % → + - → < > → == === → && → || → ?: → =. Khi không chắc, dùng ngoặc.

Số học và gán

<?php
$a = 17; $b = 5;
echo $a + $b, " ", $a - $b, " ", $a * $b, " ", $a / $b;  // 22 12 85 3.4
echo $a % $b, " ", $a ** 2, " ", intdiv($a, $b);        // 2 289 3
$a += 3;  $a .= " điểm";  // 20 -> "20 điểm"
$i = 5; echo $i++, " ", $i, " ", ++$i;                  // 5 6 7
echo round(3.14159, 2), " ", floor(3.7), " ", ceil(3.2); // 3.14 3 4
echo number_format(1234567.891, 0, ",", ".");           // 1.234.568

So sánh và logic

<?php
$diem = 7.5; $chuyen_can = true;
var_dump($diem >= 5 && $chuyen_can);     // true
var_dump($diem >= 8 || $chuyen_can);     // true
var_dump(!$chuyen_can);                  // false
echo 5 <=> 3, " ", 3 <=> 3, " ", 1 <=> 3; // 1 0 -1 (toán tử tàu vũ trụ, dùng khi sắp xếp)
// Đánh giá ngắn mạch: vế phải không chạy nếu vế trái đã quyết định
$ok = isset($_GET["id"]) && $_GET["id"] > 0;

Toán tử điều kiện

<?php
$diem = 6;
$kq = $diem >= 5 ? "Đạt" : "Không đạt";     // ba ngôi
$ten = $_GET["ten"] ?? "Khách";              // null coalescing
$cau_hinh["theme"] ??= "sang";               // gán nếu chưa có
echo $kq, " - ", $ten;
// Chuỗi: so sánh và nối
echo "a" . 1 + 2;        // PHP 8: "a" . (1+2) = "a3"  (+ ưu tiên hơn .)
echo "Tổng: " . ($a + $b);   // luôn dùng ngoặc cho rõ
Mẹo hay

Hàm number_format($so, 0, ",", ".") định dạng tiền theo kiểu Việt Nam: 1.250.000.

Lưu ý

Chia cho 0 ném DivisionByZeroError từ PHP 8. Kiểm tra mẫu số trước khi chia.

Thực hành
  1. Tính tiền điện: 50 số đầu 1.806 đ, 50 số tiếp 1.866 đ, còn lại 2.167 đ; in kết quả có dấu chấm phân cách.
  2. Viết biểu thức kiểm tra năm nhuận (chia hết 4, không chia hết 100, hoặc chia hết 400).
  3. Dùng toán tử ba ngôi xếp loại Đạt/Không đạt; dùng ?? đặt tên mặc định.
  4. Dự đoán rồi chạy thử: echo 2 + 3 * 4 ** 2 / 8 % 5;
Tóm tắt bài học
  • Đủ phép toán số học, gán, so sánh, logic, chuỗi.
  • && || ngắn mạch; === so cả kiểu.
  • ?: ?? ??= <=> là toán tử đặc trưng.
  • Dùng ngoặc khi biểu thức phức tạp.