Rumah >pembangunan bahagian belakang >masalah PHP >PHP menentukan sama ada medan objek adalah batal atau tidak ditentukan

PHP menentukan sama ada medan objek adalah batal atau tidak ditentukan

PHPz
PHPzasal
2023-04-19 11:29:111302semak imbas

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

  1. null

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 '未设置标题';
}
  1. undefined

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:

  1. fungsi isset

Fungsi ini digunakan untuk menentukan sama ada pembolehubah telah diisytiharkan dan nilainya bukan NULL.

$data = [
    'title' => null,
    'content' => '内容',
];
if (!isset($data['title'])) {
    echo '未设置标题';
}
  1. array_key_exists function

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:

  1. fungsi isset

Fungsi ini digunakan untuk menentukan sama ada pembolehubah telah diisytiharkan dan nilainya bukan NULL.

$class = new stdClass();
if (!isset($class->name)) {
    echo '未定义属性name';
}
  1. property_exists function

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!

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