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

醉折花枝作酒筹
Lepaskan: 2023-03-11 17:46:02
ke hadapan
2115 orang telah melayarinya

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
Salin selepas log masuk
  • 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)); // 语法错误
Salin selepas log masuk

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);
Salin selepas log masuk

kosong()

Menentukan sama ada pembolehubah tidak wujud atau kosong.

empty ( mixed $var ) : bool
Salin selepas log masuk
  • 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)); // 语法错误
Salin selepas log masuk

!

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); // 语法错误
Salin selepas log masuk

?:

Singkatan untuk operator ternary.

$c[&#39;name&#39;] ?: 10 等价于 !$c[&#39;name&#39;] ? 10 : $c[&#39;name&#39;]
Salin selepas log masuk

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
Salin selepas log masuk

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!

Label berkaitan:
php
sumber:csdn.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan