Menu
CoddyTech

Toán tử kết hợp null

Thuộc phần Kiến thức cơ bản trong hành trình PHP của Coddy. Bài học 31 trên 71.

Toán tử kết hợp null (??) giúp bạn dễ dàng dùng giá trị mặc định khi một biến có giá trị null hoặc không tồn tại. Toán tử này đặc biệt hữu ích khi làm việc với dữ liệu có thể bị thiếu.

Cú pháp đặt ?? giữa biến cần kiểm tra và giá trị dự phòng:

<?php
$username = null;

$displayName = $username ?? "Guest";
echo $displayName; // Guest
?>

PHP kiểm tra xem $username có phải là null không. Vì đúng như vậy, toán tử trả về "Guest" thay vào đó. Nếu $username có giá trị, giá trị đó sẽ được dùng.

<?php
$username = "Alice";

$displayName = $username ?? "Guest";
echo $displayName; // Alice
?>

Toán tử kết hợp null (null coalescing operator) cũng hoạt động khi một biến (variable) chưa được định nghĩa, mà không gây ra lỗi:

<?php
// Biến (variable) $color chưa được định nghĩa ở đâu cả
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue
?>

Cách này giúp ?? gọn gàng hơn so với dùng toán tử ba ngôi cùng các kiểm tra isset(). Cách này rất phù hợp để cung cấp giá trị mặc định hợp lý khi dữ liệu có thể bị thiếu.

challenge icon

Thử thách

Dễ

Đọc hai giá trị từ đầu vào: một chuỗi nickname và một chuỗi theme.

Dùng toán tử kết hợp null để xử lý các giá trị có thể bị thiếu:

  1. Tạo biến $userNickname và gán giá trị null cho biến đó. Sau đó, dùng toán tử kết hợp null để gán cho $displayNickname giá trị của $userNickname nếu biến này tồn tại và không phải là null, nếu không thì dùng giá trị đầu vào nickname.
  2. Tạo biến $userTheme và gán giá trị đầu vào theme cho biến đó. Dùng toán tử kết hợp null để gán cho $selectedTheme giá trị của $userTheme nếu biến này tồn tại và không phải là null, nếu không thì dùng dark làm giá trị mặc định.
  3. Dùng trực tiếp toán tử kết hợp null với biến chưa được định nghĩa $language (không định nghĩa biến này) để gán cho $displayLanguage giá trị của $language nếu biến này tồn tại, nếu không thì dùng English làm giá trị mặc định.

In từng kết quả trên một dòng mới theo thứ tự sau: $displayNickname, $selectedTheme, $displayLanguage.

Ví dụ:

Nếu đầu vào là Player1 và light, đầu ra sẽ là:

Player1
light
English

Nếu đầu vào là GuestUser và blue, đầu ra sẽ là:

GuestUser
blue
English

Tự làm thử

<?php
// Đọc đầu vào
$nickname = trim(fgets(STDIN));
$theme = trim(fgets(STDIN));

// TODO: Viết code của bạn bên dưới
// 1. Tạo $userNickname với giá trị null, rồi dùng ?? để gán giá trị cho $displayNickname
// 2. Tạo $userTheme với giá trị đầu vào của theme, rồi dùng ?? để gán giá trị cho $selectedTheme (giá trị mặc định: văn bản chính xác trong hướng dẫn)
// 3. Dùng ?? với $language chưa được định nghĩa để gán giá trị cho $displayLanguage (giá trị mặc định: văn bản chính xác trong hướng dẫn)

// In kết quả ra (mỗi kết quả trên một dòng mới)
echo $displayNickname . "\n";
echo $selectedTheme . "\n";
echo $displayLanguage . "\n";
?>
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