Kết hợp null null

Tóm tắt, sự ra đời của PHP 7  một bước đột phá rất quan trọng bởi hiện nay có khá nhiều công nghệ ra đời với tốc độ xử lý nhanh  nên PHP cần phải cạnh tranh rất nhiều mới giữ được vị trí của mình trên thị trường

Trong PHP 7, một tính năng mới, toán tử hợp nhất null (??) đã được giới thiệu. Nó được sử dụng để thay thế hoạt động bậc ba kết hợp với hàm isset(). Toán tử hợp nhất Null trả về toán hạng đầu tiên của nó nếu nó tồn tại và không phải là NULL;

Ví dụ

");

   // Equivalent code using ternary operator
   $username = isset($_GET['username']) ? $_GET['username'] : 'not passed';
   print($username);
   print("
"); // Chaining ?? operation $username = $_GET['username'] ?? $_POST['username'] ?? 'not passed'; print($username); ?>

Nó tạo ra đầu ra trình duyệt sau -

not passed
not passed
not passed

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 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

Nội dung chính Hiển thị

  • 1. Toán tử ??
  • 2. Toán tử <=> Spaceship Operator
  • 3. Lời kết
  • Nhà điều hành Null Coalescing ??
  • Use ??
  • Nhà điều hành Stacking Null Coalesce
  • Nhà khai thác bậc ba ?
  • Use ?
  • Ba xếp hạng toán tử
  • Xếp chồng cả hai, chúng ta có thể rút ngắn điều kiện này
  • Go to this thing
  • Tuyệt, phải không?. -)

Kết hợp null null

Run bên dưới trên chế độ tương tác php (

 null);

print $b['a'] ?? 'd'; // d
print "\n";

print $b['a'] ?: 'd'; // d
print "\n";

print $b['c'] ?? 'e'; // e
print "\n";

print $b['c'] ?: 'e'; // Notice: Undefined index: c in /in/apAIb on line 33
print "\n";
1 trên thiết bị đầu cuối). Nhận trên mỗi dòng hiển thị kết quả kiểm tra

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2

Nhà điều hành Null Coalescing ??

  • $a = 12;
    $b = 20;
    
    $result = $a <=> $b;
    
    echo $result; // kết quả -1
    1giống như một "cổng" chỉ cho phép NULL đi qua
  • Vì vậy, nó luôn trả về tham số đầu tiên , ngoại trừ khi tham số đầu tiên xảy ra_______23
  • Điều này có nghĩa là
    $a = 12;
    $b = 20;
    
    $result = $a <=> $b;
    
    echo $result; // kết quả -1
    1là giống như_
     null);
    
    print $b['a'] ?? 'd'; // d
    print "\n";
    
    print $b['a'] ?: 'd'; // d
    print "\n";
    
    print $b['c'] ?? 'e'; // e
    print "\n";
    
    print $b['c'] ?: 'e'; // Notice: Undefined index: c in /in/apAIb on line 33
    print "\n";
    
    5

Use ??

  • rút ngắn _______26kiểm tra
  • ví dụ
     null);
    
    print $b['a'] ?? 'd'; // d
    print "\n";
    
    print $b['a'] ?: 'd'; // d
    print "\n";
    
    print $b['c'] ?? 'e'; // e
    print "\n";
    
    print $b['c'] ?: 'e'; // Notice: Undefined index: c in /in/apAIb on line 33
    print "\n";
    
    7

Nhà điều hành Stacking Null Coalesce

not passed
not passed
not passed
0

Nhà khai thác bậc ba ?

  • $a = 12;
    $b = 20;
    
    $result = $a <=> $b;
    
    echo $result; // kết quả -1
    6giống như một cổng cánh cho phép
     null);
    
    print $b['a'] ?? 'd'; // d
    print "\n";
    
    print $b['a'] ?: 'd'; // d
    print "\n";
    
    print $b['c'] ?? 'e'; // e
    print "\n";
    
    print $b['c'] ?: 'e'; // Notice: Undefined index: c in /in/apAIb on line 33
    print "\n";
    
    9đi qua - bao gồm
     null);
    
    print $b['a'] ?? 'd'; // d
    print "\n";
    
    print $b['a'] ?: 'd'; // d
    print "\n";
    
    print $b['c'] ?? 'e'; // e
    print "\n";
    
    print $b['c'] ?: 'e'; // Notice: Undefined index: c in /in/apAIb on line 33
    print "\n";
    
    3
  • Unknown what thing.
    not passed
    not passed
    not passed
    
    41,
    not passed
    not passed
    not passed
    
    42,
     null);
    
    print $b['a'] ?? 'd'; // d
    print "\n";
    
    print $b['a'] ?: 'd'; // d
    print "\n";
    
    print $b['c'] ?? 'e'; // e
    print "\n";
    
    print $b['c'] ?: 'e'; // Notice: Undefined index: c in /in/apAIb on line 33
    print "\n";
    
    3,
    $a = 12;
    $b = 20;
    
    $result = $a <=> $b;
    
    echo $result; // kết quả -1
    8,
    not passed
    not passed
    not passed
    
    45,
    not passed
    not passed
    not passed
    
    46
  • Giống như toán tử bậc ba cũ.
    not passed
    not passed
    not passed
    
    47
  • Lưu ý.
    $a = 12;
    $b = 20;
    
    $result = $a <=> $b;
    
    echo $result; // kết quả -1
    6 sẽ ném
    not passed
    not passed
    not passed
    
    49 vào các biến không xác định (
    var_export (false ?? 'value2');   // false
    var_export (true  ?? 'value2');   // true
    var_export (null  ?? 'value2');   // value2
    var_export (''    ?? 'value2');   // ""
    var_export (0     ?? 'value2');   // 0
    
    var_export (false ?: 'value2');   // value2
    var_export (true  ?: 'value2');   // true
    var_export (null  ?: 'value2');   // value2
    var_export (''    ?: 'value2');   // value2
    var_export (0     ?: 'value2');   // value2
    
    0hoặc
    not passed
    not passed
    not passed
    
    45)

Use ?

  • kiểm tra
    not passed
    not passed
    not passed
    
    46,
    not passed
    not passed
    not passed
    
    45,
    var_export (false ?? 'value2');   // false
    var_export (true  ?? 'value2');   // true
    var_export (null  ?? 'value2');   // value2
    var_export (''    ?? 'value2');   // ""
    var_export (0     ?? 'value2');   // 0
    
    var_export (false ?: 'value2');   // value2
    var_export (true  ?: 'value2');   // true
    var_export (null  ?: 'value2');   // value2
    var_export (''    ?: 'value2');   // value2
    var_export (0     ?: 'value2');   // value2
    
    4vv
  • Rút ngắn hoạt động bậc ba như
    var_export (false ?? 'value2');   // false
    var_export (true  ?? 'value2');   // true
    var_export (null  ?? 'value2');   // value2
    var_export (''    ?? 'value2');   // ""
    var_export (0     ?? 'value2');   // 0
    
    var_export (false ?: 'value2');   // value2
    var_export (true  ?: 'value2');   // true
    var_export (null  ?: 'value2');   // value2
    var_export (''    ?: 'value2');   // value2
    var_export (0     ?: 'value2');   // value2
    
    5 thành
    var_export (false ?? 'value2');   // false
    var_export (true  ?? 'value2');   // true
    var_export (null  ?? 'value2');   // value2
    var_export (''    ?? 'value2');   // ""
    var_export (0     ?? 'value2');   // 0
    
    var_export (false ?: 'value2');   // value2
    var_export (true  ?: 'value2');   // true
    var_export (null  ?: 'value2');   // value2
    var_export (''    ?: 'value2');   // value2
    var_export (0     ?: 'value2');   // value2
    
    6
  • Rút ngắn
    var_export (false ?? 'value2');   // false
    var_export (true  ?? 'value2');   // true
    var_export (null  ?? 'value2');   // value2
    var_export (''    ?? 'value2');   // ""
    var_export (0     ?? 'value2');   // 0
    
    var_export (false ?: 'value2');   // value2
    var_export (true  ?: 'value2');   // true
    var_export (null  ?: 'value2');   // value2
    var_export (''    ?: 'value2');   // value2
    var_export (0     ?: 'value2');   // value2
    
    7thành____38

Ba xếp hạng toán tử

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
2

Xếp chồng cả hai, chúng ta có thể rút ngắn điều kiện này

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
3

Go to this thing

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
40

Tuyệt, phải không?. -)

149 hữu ích 4 bình luận chia sẻ

câu trả lời

74

Null coalescing operator trong php

Nếu bạn sử dụng thuật toán bậc ba phím tắt như thế này, nó sẽ gây ra thông báo nếu

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
9 không được đặt

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
41

Vì vậy, thay vào đó bạn phải làm điều gì đó như sau

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
42

Các nhà khai thác vô liên kết tương đương với tuyên bố trên, và sẽ trở lại 'mặc định' nếu

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
9không được thiết lập hoặc là
$a = 12;
$b = 20;

$result = $a <=> $b;

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

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
43

Lưu ý rằng nó không kiểm tra độ tin cậy. Nó chỉ kiểm tra nếu nó được đặt và không phải là null

Bạn có thể làm điều này và giá trị được xác định ban đầu (đặt và không

$a = 12;
$b = 20;

$result = $a <=> $b;

echo $result; // kết quả -1
4) cũng sẽ được trả lại

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
44

Bây giờ đó là một nhà điều hành liên kết thích hợp

74 hữu ích 0 bình luận chia sẻ

câu trả lời

45

Null coalescing operator trong php

Sự khác biệt chính là

  1. Ternary hành biểu hiện

    not passed
    not passed
    not passed
    
    03 lợi nhuận
    not passed
    not passed
    not passed
    
    04 nếu
    not passed
    not passed
    not passed
    
    04 đánh giá lại để
    not passed
    not passed
    not passed
    
    06 nhưng mặt khác Hành động hợp nhất vô giá trị biểu hiện
    not passed
    not passed
    not passed
    
    07 đánh giá lại để
    not passed
    not passed
    not passed
    
    04 nếu
    not passed
    not passed
    not passed
    
    04 là không
     null);
    
    print $b['a'] ?? 'd'; // d
    print "\n";
    
    print $b['a'] ?: 'd'; // d
    print "\n";
    
    print $b['c'] ?? 'e'; // e
    print "\n";
    
    print $b['c'] ?: 'e'; // Notice: Undefined index: c in /in/apAIb on line 33
    print "\n";
    
    3

  2. Toán tử bậc ba

    not passed
    not passed
    not passed
    
    03 phát ra thông báo nếu giá trị bên trái
    var_export (false ?? 'value2');   // false
    var_export (true  ?? 'value2');   // true
    var_export (null  ?? 'value2');   // value2
    var_export (''    ?? 'value2');   // ""
    var_export (0     ?? 'value2');   // 0
    
    var_export (false ?: 'value2');   // value2
    var_export (true  ?: 'value2');   // true
    var_export (null  ?: 'value2');   // value2
    var_export (''    ?: 'value2');   // value2
    var_export (0     ?: 'value2');   // value2
    
    22 không tồn tại nhưng mặt khác Toán tử Null Coalescing
    not passed
    not passed
    not passed
    
    07 Đặc biệt, không phát thông báo nếu giá trị bên trái
    var_export (false ?? 'value2');   // false
    var_export (true  ?? 'value2');   // true
    var_export (null  ?? 'value2');   // value2
    var_export (''    ?? 'value2');   // ""
    var_export (0     ?? 'value2');   // 0
    
    var_export (false ?: 'value2');   // value2
    var_export (true  ?: 'value2');   // true
    var_export (null  ?: 'value2');   // value2
    var_export (''    ?: 'value2');   // value2
    var_export (0     ?: 'value2');   // value2
    
    22 không tồn tại, giống như
    var_export (false ?? 'value2');   // false
    var_export (true  ?? 'value2');   // true
    var_export (null  ?? 'value2');   // value2
    var_export (''    ?? 'value2');   // ""
    var_export (0     ?? 'value2');   // 0
    
    var_export (false ?: 'value2');   // value2
    var_export (true  ?: 'value2');   // true
    var_export (null  ?: 'value2');   // value2
    var_export (''    ?: 'value2');   // value2
    var_export (0     ?: 'value2');   // value2
    
    25

  3. ternary Operator is an left left

    var_export (false ?? 'value2');   // false
    var_export (true  ?? 'value2');   // true
    var_export (null  ?? 'value2');   // value2
    var_export (''    ?? 'value2');   // ""
    var_export (0     ?? 'value2');   // 0
    
    var_export (false ?: 'value2');   // value2
    var_export (true  ?: 'value2');   // true
    var_export (null  ?: 'value2');   // value2
    var_export (''    ?: 'value2');   // value2
    var_export (0     ?: 'value2');   // value2
    
    45

    Null Coalescing Operator là liên kết phù hợp

    var_export (false ?? 'value2');   // false
    var_export (true  ?? 'value2');   // true
    var_export (null  ?? 'value2');   // value2
    var_export (''    ?? 'value2');   // ""
    var_export (0     ?? 'value2');   // 0
    
    var_export (false ?: 'value2');   // value2
    var_export (true  ?: 'value2');   // true
    var_export (null  ?: 'value2');   // value2
    var_export (''    ?: 'value2');   // value2
    var_export (0     ?: 'value2');   // value2
    
    46

Bây giờ, hãy giải thích sự khác biệt giữa ví dụ

Nhà điều hành bậc ba

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
26

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
47

Nhà điều hành Null Coalescing

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
27

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
48

Đây là bảng giải thích sự khác biệt và giống nhau giữa

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
28và
$a = 12;
$b = 20;

$result = $a <=> $b;

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

Null coalescing operator trong php

Lưu ý đặc biệt. toán tử liên kết null và toán tử bậc ba là một biểu thức và nó không đánh giá một biến mà là kết quả của một biểu thức. Điều quan trọng là phải biết nếu bạn muốn trả lại một biến bằng tham chiếu. Câu lệnh return $ foo ?? . $b;

45 hữu ích 0 bình luận chia sẻ

câu trả lời

17

Null coalescing operator trong php

Cả hai đều hoạt động khác nhau khi nói đến xử lý dữ liệu động

Nếu biến rỗng ('') thì liên kết rỗng sẽ coi biến là đúng nhưng toán tử bậc ba viết tắt thì không. Và đó là điều cần phải ghi nhớ

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
49

And start

$a = 12;
$b = 20;

$result = $a <=> $b;

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

Liên kết. https. //3v4l. tổ chức/ZBAa1

17 hữu ích 1 bình luận chia sẻ

câu trả lời

16

Null coalescing operator trong php

Cả hai đều là viết tắt của các biểu thức dài hơn

$a = 12;
$b = 20;

$result = $a <=> $b;

echo $result; // kết quả -1
6là viết tắt của
var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
31. Biểu thức này sẽ đánh giá thành $a nếu $ađánh giá là TRUE

$a = 12;
$b = 20;

$result = $a <=> $b;

echo $result; // kết quả -1
1là viết tắt của
var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
33. Biểu thức này sẽ đánh giá thành $a nếu $a được đặt và không trống

Các trường hợp sử dụng của chúng trùng lặp khi $a không được xác định hoặc null. Khi $a không được xác định

$a = 12;
$b = 20;

$result = $a <=> $b;

echo $result; // kết quả -1
1 sẽ không tạo ra E_NOTICE, nhưng kết quả vẫn giống nhau. When $a is null, results are same nhau

16 hữu ích 0 bình luận chia sẻ

câu trả lời

6

Null coalescing operator trong php

Đối chiếu với người mới bắt đầu

Liên kết toán tử rỗng (??)

Mọi thứ đều đúng ngoại trừ

$a = 12;
$b = 20;

$result = $a <=> $b;

echo $result; // kết quả -1
4các giá trị và không xác định (biến / chỉ số mảng / thuộc tính đối tượng)

Ví dụ

$a = 12;
$b = 20;

$result = $a <=> $b;

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

Điều này về cơ bản là kiểm tra biến (chỉ số mảng, thuộc tính đối tượng, v. v. ) có tồn tại hay không

$a = 12;
$b = 20;

$result = $a <=> $b;

echo $result; // kết quả -1
4. future as
var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
37chức năng

Viết tắt toán tử bậc ba (?. )

Mỗi điều sai (

$a = 12;
$b = 20;

$result = $a <=> $b;

echo $result; // kết quả -1
8,
$a = 12;
$b = 20;

$result = $a <=> $b;

echo $result; // kết quả -1
4,
not passed
not passed
not passed
41, chuỗi trống) đều được đến như sai, nhưng nếu điều đó không xác định thì nó cũng đi kèm như sai nhưng
var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
401 sẽ ném

Ví dụ

$a = 12;
$b = 20;

$result = $a <=> $b;

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

Hi vọng thư này có ích

6 hữu ích 0 bình luận chia sẻ

câu trả lời

4

Null coalescing operator trong php

Cuộn xuống liên kết này và xem phần, nó cung cấp cho bạn một ví dụ so sánh như bên dưới

$a = 12;
$b = 20;

$result = $a <=> $b;

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

Tuy nhiên, không nên xâu chuỗi các toán tử vì nó khiến việc đọc mã sau này trở nên khó hiểu hơn

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

Về cơ bản, sử dụng toán tử liên hợp sẽ làm cho nó tự động kiểm tra null không giống như toán tử bậc ba

4 hữu ích 5 bình luận chia sẻ

câu trả lời

3

Null coalescing operator trong php

Các câu trả lời khác đi sâu và đưa ra những lời giải thích tuyệt vời. Đối với những người tìm kiếm câu trả lời nhanh,

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
402 Là
var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
403

while

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
404 Là
var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
405


Sự khác biệt chính sẽ là khi toán tử bên trái là

  • The false value that not must be null (
    not passed
    not passed
    not passed
    
    41,
    var_export (false ?? 'value2');   // false
    var_export (true  ?? 'value2');   // true
    var_export (null  ?? 'value2');   // value2
    var_export (''    ?? 'value2');   // ""
    var_export (0     ?? 'value2');   // 0
    
    var_export (false ?: 'value2');   // value2
    var_export (true  ?: 'value2');   // true
    var_export (null  ?: 'value2');   // value2
    var_export (''    ?: 'value2');   // value2
    var_export (0     ?: 'value2');   // value2
    
    407,
    $a = 12;
    $b = 20;
    
    $result = $a <=> $b;
    
    echo $result; // kết quả -1
    8,
    var_export (false ?? 'value2');   // false
    var_export (true  ?? 'value2');   // true
    var_export (null  ?? 'value2');   // value2
    var_export (''    ?? 'value2');   // ""
    var_export (0     ?? 'value2');   // 0
    
    var_export (false ?: 'value2');   // value2
    var_export (true  ?: 'value2');   // true
    var_export (null  ?: 'value2');   // value2
    var_export (''    ?: 'value2');   // value2
    var_export (0     ?: 'value2');   // value2
    
    409,. )
  • Một biến không xác định

3 hữu ích 1 bình luận chia sẻ

câu trả lời

2

Null coalescing operator trong php

Có vẻ như có những ưu điểm và thiếu sót khi sử dụng

$a = 12;
$b = 20;

$result = $a <=> $b;

echo $result; // kết quả -1
1hoặc
$a = 12;
$b = 20;

$result = $a <=> $b;

echo $result; // kết quả -1
6. Ưu điểm của việc sử dụng
$a = 12;
$b = 20;

$result = $a <=> $b;

echo $result; // kết quả -1
6là nó đánh giá sai và null và "" giống nhau. Vấn đề là nó báo cáo một E_NOTICE nếu các đối số trước đó trống. Với
$a = 12;
$b = 20;

$result = $a <=> $b;

echo $result; // kết quả -1
1người chuyên nghiệp là không có E_NOTICE, nhưng điều khó khăn là nó không đánh giá sai và không giống nhau. Theo kinh nghiệm của tôi, tôi đã thấy mọi người bắt đầu sử dụng null và false thay thế cho nhau nhưng sau đó họ cuối cùng sử dụng cách sửa mã của họ để phù hợp với việc sử dụng null hoặc false, nhưng không phải . Một cách khác là tạo ra một trạng thái ternary phức tạp hơn.
var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
414

Sau đây là một ví dụ về sự khác biệt của việc sử dụng

$a = 12;
$b = 20;

$result = $a <=> $b;

echo $result; // kết quả -1
1toán tử sử dụng cả null và sai

$a = 12;
$b = 20;

$result = $a <=> $b;

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

Tuy nhiên, bằng cách giải thích kỹ thuật toán toán bậc ba, chúng ta có thể làm cho một chuỗi sai hoặc chuỗi rỗng "" hoạt động như thể nó là một chuỗi rỗng mà không cần phải ném e_notice

$a = 12;
$b = 20;

$result = $a <=> $b;

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

Cá nhân tôi nghĩ sẽ thực sự tuyệt vời nếu một phiên bản PHP trong tương lai bao gồm một toán tử mới khác.

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
416thay thế cú pháp trên. tức là.
var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
417Cú pháp đó sẽ đánh giá null, false và "" như nhau và không ném ra một E_NOTICE

2 hữu ích 2 bình luận chia sẻ

câu trả lời

1

Null coalescing operator trong php

$a = 12;
$b = 20;

$result = $a <=> $b;

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

1 hữu ích 0 bình luận chia sẻ

câu trả lời

0

Null coalescing operator trong php

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
418chỉ thực hiện hai nhiệm vụ. nó kiểm tra
var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
419và
var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
420. Please view ví dụ sau

$a = 12;
$b = 20;

$result = $a <=> $b;

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

Ví dụ mã ở trên nói rằng

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
418xử lý một biến không tồn tại và một biến được đặt thành
 null);

print $b['a'] ?? 'd'; // d
print "\n";

print $b['a'] ?: 'd'; // d
print "\n";

print $b['c'] ?? 'e'; // e
print "\n";

print $b['c'] ?: 'e'; // Notice: Undefined index: c in /in/apAIb on line 33
print "\n";
3theo cùng một cách

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
418là một cải tiến so với
var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
424. Vui lòng xem đoạn mã sau so sánh hai đoạn mã

$a = 12;
$b = 20;

$result = $a <=> $b;

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

Vì vậy, sự khác biệt giữa hai là

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
418toán tử được thiết kế để xử lý các biến không xác định tốt hơn
var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
424. Trong khi đó,
var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
424là viết tắt của
var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
428

var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
418không có nghĩa là để thay thế
var_export (false ?? 'value2');   // false
var_export (true  ?? 'value2');   // true
var_export (null  ?? 'value2');   // value2
var_export (''    ?? 'value2');   // ""
var_export (0     ?? 'value2');   // 0

var_export (false ?: 'value2');   // value2
var_export (true  ?: 'value2');   // true
var_export (null  ?: 'value2');   // value2
var_export (''    ?: 'value2');   // value2
var_export (0     ?: 'value2');   // value2
424, nhưng trong một số trường hợp sử dụng như trong ví dụ trên, nó cho phép bạn viết mã sạch với ít rắc rối hơn

ứng dụng. http. // cư dân. io/post/6/php7-null-coalescing-operator-usage-and-examples

0 hữu ích 1 bình luận chia sẻ

câu trả lời

0

Null coalescing operator trong php

Khi sử dụng các superglobal như $ _GET hoặc $ _REQUEST, bạn nên biết rằng chúng có thể là một chuỗi rỗng. Trong trường hợp cụ thể này, ví dụ này

$a = 12;
$b = 20;

$result = $a <=> $b;

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

sẽ không thành công vì giá trị của $ tên người dùng bây giờ là một chuỗi trống

Vì vậy, khi sử dụng $ _GET hay thậm chí là $ _REQUEST, bạn nên sử dụng toán tử cấp ba thay thế như sau