Giá trị tham số mặc định
Thuộc phần Kiến thức cơ bản trong hành trình PHP của Coddy. Bài học 64 trên 71.
Đôi khi, bạn muốn tham số của hàm có giá trị dự phòng khi không có đối số nào được truyền vào. Giá trị mặc định của tham số cho phép bạn xác định giá trị của tham số khi bên gọi không chỉ định giá trị đó.
Để đặt giá trị mặc định, hãy gán trực tiếp giá trị đó trong phần khai báo hàm bằng toán tử =:
<?php
function greet($name = "Guest") {
echo "Hello, $name!\n";
}
greet("Alice");
greet();
?>Kết quả in ra:
Hello, Alice!
Hello, Guest!Khi bạn gọi greet("Alice"), đối số sẽ ghi đè giá trị mặc định. Khi bạn gọi greet() mà không có đối số, PHP sẽ dùng "Guest" thay thế.
Bạn có thể kết hợp các tham số bắt buộc và không bắt buộc, nhưng tham số có giá trị mặc định phải đứng sau các tham số bắt buộc:
<?php
function createUser($name, $role = "member") {
return "$name is a $role";
}
echo createUser("Alice") . "\n";
echo createUser("Bob", "admin");
?>Kết quả:
Alice is a member
Bob is a adminTham số đầu tiên $name là bắt buộc, còn $role mặc định là "member" nếu không được cung cấp. Cách viết này giúp các hàm linh hoạt hơn mà không yêu cầu người gọi luôn cung cấp mọi đối số.
Thử thách
DễĐọc hai dòng đầu vào:
- Tên sản phẩm (ví dụ:
Laptop) - Số lượng (ví dụ:
5). Đầu vào này có thể để trống
Tạo một hàm (function) có tên formatOrder, nhận hai tham số: $product (bắt buộc) và $quantity (không bắt buộc, mặc định là 1). Hàm này sẽ return một chuỗi theo định dạng sau:
Order: [quantity]x [product]Nếu đầu vào số lượng để trống, hãy gọi hàm chỉ với tên sản phẩm (dùng số lượng mặc định). Nếu không, hãy gọi hàm với cả hai giá trị.
In ra kết quả được trả về.
Ví dụ 1:
Nếu đầu vào là Laptop và 5, đầu ra sẽ là:
Order: 5x LaptopVí dụ 2:
Nếu đầu vào là Keyboard và một dòng trống, đầu ra sẽ là:
Order: 1x KeyboardVí dụ 3:
Nếu đầu vào là Monitor và 3, đầu ra sẽ là:
Order: 3x MonitorTự làm thử
<?php
// Đọc đầu vào
$product = trim(fgets(STDIN));
$quantity = trim(fgets(STDIN));
// TODO: Tạo hàm (function) formatOrder với $product (bắt buộc) và $quantity (không bắt buộc, mặc định là 1)
// Hàm cần trả về một chuỗi theo định dạng: "Order: [quantity]x [product]"
// TODO: Gọi hàm tùy theo quantity có rỗng hay không
// Nếu quantity rỗng, chỉ truyền product (dùng giá trị mặc định)
// Nếu không, truyền cả product và quantity
// In ra kết quả
echo $result;
?>Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức cơ bản
4Toán tử so sánh và logic
Toán tử so sánhBằng nhau và đồng nhấtToán tử logic phần 1Toán tử logic phần 2Ôn tập: logic đơn giản2Biến và kiểu dữ liệu
SốChuỗi và dấu ngoặc képGiá trị BooleanQuy ước đặt tênÔn tập: khởi tạo biếnBiến rỗngNối chuỗiNhận đầu vào từ người dùngChuyển đổi sang kiểu dữ liệu khác5Logic điều kiện
Câu lệnh ifIf và elseToán tử ba ngôiToán tử kết hợp nullCâu lệnh switchÔn tập: đưa ra quyết định3Các toán tử cơ bản
Toán tử số họcToán tử chia lấy dưToán tử lũy thừaPhép gán kết hợpTăng/giảmThứ tự ưu tiên của toán tửÔn tập: phép tính đơn giảnToán tử chuỗiTự luyện tập: Trình biên dịch PHP online