Secara peribadi, saya merasakan bahawa reka bentuk sintaks dalam PHP untuk menilai sama ada pembolehubah wujud atau kosong adalah kegagalan Pembahagian kerja tidak jelas dan sempadannya tidak jelas reka bentuk jenis ini yang nampaknya mempunyai banyak fungsi tetapi tidak jelas, ini tidak boleh dikaitkan dengan PHP sebagai bahasa yang ditaip lemah, tetapi masalah pelaksana. Hari ini saya akan memperkenalkan beberapa perkara yang menyeronokkan.
isset
mengesan sama ada pembolehubah ditetapkan dan bukan nol,
isset ( mixed $var , mixed $... = ? ) : bool
Jika berbilang parameter dihantar pada satu masa, setiap parameter akan dinilai oleh Isset dari kiri ke kanan Jika pembolehubah tidak melepasi di tengah, ia akan berhenti serta-merta.
isset() hanya boleh digunakan dengan pembolehubah, kerana menghantar sebarang argumen lain akan menyebabkan ralat penghuraian.
Jika anda ingin menyemak sama ada pemalar telah ditetapkan, anda boleh menggunakan fungsi takrif().
Jika isset() digunakan untuk menyemak sifat tidak boleh diakses objek, kaedah terlebih beban ini akan dipanggil jika kaedah __isset() telah ditakrifkan.
Jika pembolehubah telah dikeluarkan menggunakan unset()], ia tidak lagi akan isset().
Pembolehubah tidak ditentukan tidak akan melaporkan ralat sintaks.
<?php function tt() { } $a = null; $b = 0; $c = []; var_dump(isset($a)); // false var_dump(isset($b)); // true var_dump(isset($c)); // true var_dump(isset($c['name'])); // false var_dump(isset($d)); // false var_dump(isset($a, $b, $c, $d)); // false // var_dump(isset("abc")); // 语法错误 // var_dump(isset(tt())); // 语法错误 // var_dump(isset(MY_CONST)); // 语法错误
Pembolehubah objek yang boleh digunakan dengan selamat untuk memeriksa objek
// instead of writing isset($abc) && isset($abc->def) && isset($abc->def->ghi); // or in a shorter form isset($abc, $abc->def, $abc->def->ghi); // you can just write isset ($abc->def->ghi);
kosong()
Menentukan sama ada pembolehubah tidak wujud atau kosong.
empty ( mixed $var ) : bool
Pembolehubah tidak ditentukan tidak akan melaporkan ralat sintaks.
Parameter tidak diperlukan sebagai pembolehubah.
kosong() pada asasnya bersamaan dengan !isset($var) || $var == false.
Mengembalikan palsu apabila var wujud dan merupakan nilai bukan kosong dan bukan sifar, jika tidak mengembalikan benar.
Apabila kosong() digunakan pada sifat objek halimunan, kaedah __isset() akan dipanggil jika wujud.
<?php function tt() { } $a = null; $b = 0; $c = []; var_dump(empty($a)); // true var_dump(empty($b)); // true var_dump(empty($c)); // true var_dump(empty($c['name'])); // true var_dump(empty($d)); // true var_dump(empty("abc")); // false var_dump(empty(tt())); // true // var_dump(empty(MY_CONST)); // 语法错误
!
Tentukan sama ada ia kosong. Anda juga boleh menentukan sama ada ia wujud Pembolehubah tidak ditentukan akan melaporkan Notis PHP dan tidak akan melaporkan ralat sintaks dan tidak akan menamatkan program.
<?php function tt() { } $a = null; $b = 0; $c = []; var_dump(!$a); // true var_dump(!$b); // true var_dump(!$c); // true var_dump(!$c['name']); // true PHP Notice: Undefined index: name var_dump(!$d); // true PHP Notice: Undefined index: name var_dump(!("abc")); // false var_dump(!tt()); // true // var_dump(!MY_CONST); // 语法错误
?:
Singkatan untuk operator ternary.
$c['name'] ?: 10 等价于 !$c['name'] ? 10 : $c['name']
Jadi asas penghakimannya adalah tetap: menilai sama ada ia kosong. Anda juga boleh menentukan sama ada ia wujud Pembolehubah tidak ditentukan akan melaporkan Notis PHP, tiada ralat sintaks akan dilaporkan dan program tidak akan ditamatkan.
??
$a ?? 10 等价于 isset($a) ? $a : 1
Induksi
Hakim sama ada ia wujud: isset, ? ?
Hakim sama ada ia tidak wujud atau kosong: kosong()
Hakim sama ada ia tidak digalakkan untuk digunakan ia untuk menilai sama ada ia wujud: !, ?:
Pembelajaran yang disyorkan: tutorial video php
Atas ialah kandungan terperinci Apakah maksud PHP ?:, ??, isset, dan kosong?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!