Null coalescing operator trong php

Ngoài các toán tử như toán tử quan hệ, toán tử luận lý mà PHP đang hỗ trợ thì PHP7 đã bổ sung thêm một số toán tử rất hay giúp việc xử lý dữ liệu nhanh hơn. Trong bài viết mình chỉ giới thiệu những toán tử mà mình biết thôi nhé, sau này tìm ra thêm mình sẽ bổ sung.

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Toán tử ?? Null Coalescing Operator

Trong PHP7 có giới thiệu toán tử ??, đây là toán tử dùng để thay thế cho hàm isset khi ta gán dữ liệu. Ví dụ khi bạn lấy dữ liệu từ phương thức GET thì thông thường ta sử dụng thêm hàm isset để kiểm tra như sau:

if [isset[$_GET['id']]]{
    $id = $_GET['id'];
}

Hoặc kết hợp với toán tử ba ngôi:

$id = isset[$_GET['id']] ? $_GET['id'] : '';

Bài viết này được đăng tại [free tuts .net]

Tuy nhiên nếu sử dụng toán tử ?? thì ta viết đơn giản nhu sau:

Như vậy cú pháp sẽ như sau:

$id = [$is_null] ?? 'ok';

Giải thích: Nếu biểu thức $is_null có giá trị khác null thì biến $id sẽ có giá trị là $is_null, ngược lại biến $id sẽ có giá trị là ok.

2. Toán tử  Spaceship Operator

Đây là toán tử thường dùng với kiểu số [INT], nếu bạn sử dụng với kiểu chuỗi thì hệ thống sẽ dựa vào mã ASCII để lấy ra số của chuỗi đó.

Toán tử này có cú pháp như sau:

Ta sẽ có ba trường hợp xảy ra:

  • Nếu $a > $b thì $result sẽ có giá trị là 1
  • Nếu $a = $b thì $result sẽ có giá trị là 0
  • Nếu $a < $b thì $result sẽ có giá trị là -1

Ví dụ:

$a = 12;
$b = 20;

$result = $a  $b;

echo $result; // kết quả -1

3. Lời kết

Hiện tại thì mình mới tìm thấy hai toán tử trên thôi, sau này nếu tìm thấy thêm thì mình sẽ bổ sung cho bài viết. Hoặc nếu bạn biết toán tử nào thì hãy comment để mình bổ sung vào bài viết nhé.

answer

422

Khi đối số đầu tiên của bạn là null, về cơ bản chúng giống nhau ngoại trừ việc liên kết null sẽ không xuất ra E_NOTICEkhi bạn có một biến không xác định. Tài liệu di chuyển PHP 7.0 có điều này để nói:

Toán tử liên kết null [??] đã được thêm vào dưới dạng đường cú pháp cho trường hợp phổ biến là cần sử dụng một số ba kết hợp với Isset []. Nó trả về toán hạng đầu tiên nếu nó tồn tại và không phải là NULL; nếu không nó trả về toán hạng thứ hai của nó.

Dưới đây là một số mã ví dụ để chứng minh điều này:

Chủ Đề