Hàm là một khối mã có thể tái sử dụng, giúp tối ưu hóa và tổ chức mã nguồn.
Cú pháp khai báo hàm: function tenHam($thamSo1, $thamSo2, ...) { // Mã lệnh thực thi }
2. Hàm không có tham số
Khai báo và sử dụng: function chaoMung() { echo "Xin chào, PHP!"; } // Gọi hàm chaoMung();
3. Hàm có tham số
Hàm có thể nhận giá trị từ bên ngoài qua tham số: function tinhTong($a, $b) { return $a + $b; } echo tinhTong(5, 10); // Kết quả: 15
4. Hàm với giá trị mặc định của tham số
Có thể thiết lập giá trị mặc định cho tham số nếu không truyền giá trị khi gọi hàm: function chaoMung($ten = "Khách") { echo "Xin chào, $ten!"; } chaoMung(); // Kết quả: Xin chào, Khách! chaoMung("Tany Kawa"); // Kết quả: Xin chào, Tany Kawa!
5. Hàm trả về giá trị
Hàm có thể trả về kết quả bằng từ khóa return: function nhanDoi($so) { return $so * 2; } $ketQua = nhanDoi(4); // Kết quả: 8 echo $ketQua;
6. Phạm vi biến trong hàm
Biến cục bộ: Biến khai báo trong hàm, chỉ sử dụng được trong hàm. function hienThi() { $bienCucBo = "Xin chào!"; echo $bienCucBo; } hienThi(); // echo $bienCucBo; // Lỗi: biến không tồn tại ngoài hàm
Biến toàn cục: Biến khai báo ngoài hàm, có thể truy cập trong hàm bằng từ khóa global: $bienToanCuc = 10; function congBien() { global $bienToanCuc; $bienToanCuc += 5; } congBien(); echo $bienToanCuc; // Kết quả: 15
7. Hàm ẩn danh
Hàm không có tên, có thể lưu vào biến hoặc dùng làm tham số: $chao = function($ten) { return "Xin chào, $ten!"; }; echo $chao("Thu Trang"); // Kết quả: Xin chào, Thu Trang!
Bài tập thực hành:
Bài tập 1: Viết hàm tính giai thừa
Yêu cầu: Viết hàm nhận vào một số nguyên dương và trả về giai thừa của nó.
Gợi ý: function giaiThua($n) { if ($n == 0 || $n == 1) { return 1; } return $n * giaiThua($n - 1); } echo giaiThua(5); // Kết quả: 120
Bài tập 2: Viết hàm kiểm tra số nguyên tố
Yêu cầu: Nhập vào một số, kiểm tra số đó có phải số nguyên tố không.
Gợi ý: function kiemTraNguyenTo($n) { if ($n <= 1) return false; for ($i = 2; $i <= sqrt($n); $i++) { if ($n % $i == 0) return false; } return true; } echo kiemTraNguyenTo(7) ? "Là số nguyên tố" : "Không phải số nguyên tố";
Bài tập 3: Hàm tính tổng các số trong mảng
Yêu cầu: Viết hàm nhận vào một mảng và trả về tổng các phần tử trong mảng.