Dalam pembangunan, kita selalunya perlu menentukan sama ada medan tertentu objek mempunyai nilai, tetapi nilai ini mungkin batal atau tidak ditentukan Walaupun kedua-dua kes menunjukkan tiada nilai, ia masih berbeza. Oleh itu, pemprosesan yang berbeza perlu dijalankan mengikut situasi sebenar semasa menggunakannya.
1. Perbezaan antara null dan undefined
null bermaksud bahawa nilai objek atau pembolehubah yang ditentukan adalah kosong, iaitu suatu Mod tugasan, menunjukkan bahawa pembolehubah belum diberikan nilai. null juga boleh digunakan dalam kod penyahpepijatan untuk menunjukkan bahawa harta tidak ditetapkan dengan betul. Oleh itu, apabila menilai sama ada nilai atribut kosong, gunakan operator ===, kerana ia adalah pengendali kesamaan yang ketat dan akan kembali benar hanya apabila jenis data pembolehubah adalah sama dan nilainya sama. Contohnya:
$data = [ 'title' => null, 'content' => '内容', ]; if ($data['title'] === null) { echo '未设置标题'; }
undefined bermaksud pembolehubah telah diisytiharkan tetapi belum diberikan nilai Selain itu, undefined mempunyai situasi berikut :
(1) Pembolehubah tidak wujud
(2) Objek tidak mempunyai atribut tertentu
(3) Fungsi tidak mempunyai nilai pulangan
Jika anda ingin menilai Sama ada atribut tertentu tidak ditentukan boleh ditentukan menggunakan fungsi isset atau fungsi kosong, tetapi disyorkan untuk menggunakan fungsi isset. Contohnya:
$class = new stdClass(); if (!isset($class->name)) { echo '未定义属性name'; }
2 Kaedah untuk menentukan sama ada medan objek adalah batal atau tidak ditentukan
Apabila menentukan sama ada medan objek adalah batal atau tidak ditentukan, anda boleh menggunakan fungsi isset atau array_key_exists. berfungsi untuk menentukan sama ada medan objek adalah batal atau tidak ditentukan. Kaedah khusus adalah seperti berikut:
Fungsi ini digunakan untuk menentukan sama ada pembolehubah telah diisytiharkan dan nilainya bukan NULL.
$data = [ 'title' => null, 'content' => '内容', ]; if (!isset($data['title'])) { echo '未设置标题'; }
Fungsi ini digunakan untuk menentukan sama ada nama kunci yang diberikan wujud dalam tatasusunan. Mengembalikan benar jika nama kunci wujud, salah jika ia tidak wujud.
$data = [ 'title' => null, 'content' => '内容', ]; if (!array_key_exists('title', $data)) { echo '未设置标题'; }
Jika anda ingin menentukan sama ada objek mempunyai atribut tertentu, anda boleh menggunakan fungsi isset atau fungsi property_exists untuk menentukan. Kaedah khusus adalah seperti berikut:
Fungsi ini digunakan untuk menentukan sama ada pembolehubah telah diisytiharkan dan nilainya bukan NULL.
$class = new stdClass(); if (!isset($class->name)) { echo '未定义属性name'; }
Fungsi ini digunakan untuk menentukan sama ada objek mempunyai sifat tertentu.
$class = new stdClass(); if (!property_exists($class, 'name')) { echo '未定义属性name'; }
3. Ringkasan
Dalam PHP, menilai sama ada medan objek adalah batal atau tidak ditentukan adalah kemahiran yang sangat penting dan mesti dikuasai dengan teliti dalam pembangunan sebenar. Mengikut keperluan sebenar, anda boleh memilih untuk menggunakan fungsi isset, array_key_exists function, property_exists function, dsb. untuk pertimbangan. Kaedah yang berbeza sesuai untuk senario yang berbeza dan harus digunakan secara fleksibel untuk mengelakkan ralat yang tidak perlu.
Atas ialah kandungan terperinci PHP menentukan sama ada medan objek adalah batal atau tidak ditentukan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!