Menu
CoddyTech

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 admin

Tham 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ố.

challenge icon

Thử thách

Dễ

Đọc hai dòng đầu vào:

  1. Tên sản phẩm (ví dụ: Laptop)
  2. 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 Laptop

Ví dụ 2:

Nếu đầu vào là Keyboard và một dòng trống, đầu ra sẽ là:

Order: 1x Keyboard

Ví dụ 3:

Nếu đầu vào là Monitor và 3, đầu ra sẽ là:

Order: 3x Monitor

Tự 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;
?>
quiz iconTự kiểm tra

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

Tự luyện tập: Trình biên dịch PHP online