Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah maksud PHP ?:, ??, isset, dan kosong?

Apakah maksud PHP ?:, ??, isset, dan kosong?

醉折花枝作酒筹
醉折花枝作酒筹ke hadapan
2021-07-20 16:29:102118semak imbas

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.

Apakah maksud PHP ?:, ??, isset, dan kosong?

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[&#39;name&#39;])); // 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[&#39;name&#39;])); // 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[&#39;name&#39;]); // 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[&#39;name&#39;] ?: 10 等价于 !$c[&#39;name&#39;] ? 10 : $c[&#39;name&#39;]

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!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam