Jadual Kandungan
php判断一个数组为空if(!array())好,还是if(empty(array()))?
回复内容:
Rumah pembangunan bahagian belakang tutorial php php判断一个数组为空if(!array())好,还是if(empty(array()))?

php判断一个数组为空if(!array())好,还是if(empty(array()))?

Jun 06, 2016 pm 08:09 PM
php

php判断一个数组为空if(!array())好,还是if(empty(array()))?

回复内容:

php判断一个数组为空if(!array())好,还是if(empty(array()))?

首先习惯性地,RTFM

没有好不好,只有合适不合适

!empty()行为有什么区别?

  • !相当于转换为布尔值后取反,结果可以参照手册的布尔值转换部分

  • empty行为同样见手册

他们的行为有3个差异

  1. 空SimpleXML (经过实验,发现这是文档问题,php5.1后,两者行为是一致的)

  2. 未定义的变量 (!$undefined会产生error,empty($undefined)则返回true) 和isset类似,这个特性对于访问复杂结构的数组或对象成员的时候特别友好(empty($arr['userModel']->userFriends)

  3. php5.5之前,empty只接受变量,不接受表达式(比如函数的返回结果empty(getSomething())

评论里也有人说了,因为empty是语言结构,并没有函数调用的巨大开销,所以两者的性能的差异不会太大,另外现代PHP对于这种小的开销也已经优化地很好了,所以这里不怎么需要考虑性能。结合上面的分析来说,empty是优于!的,除非你的php版本比较老,而又需要对表达式直接判断,不希望多加一个变量

但是,如果你并不知道你手里的东西是不是数组,建议参考 @dreamans 的答案,考虑$arr并非数组的场景做合适的处理。

因为is_array并不具有empty的耐受未定义的特性,我推荐这种写法empty($arr) && is_array($arr)
能够严谨地支持各种场景

if(empty($undefined) && is_array($undefined));//未定义变量
if(empty($arr['userModel']->userFriends) && is_array($arr['userModel']->userFriends));//(潜在)未定义成员

//或者反向场景,判断有内容数组,结合表达式的能力
if(!empty($things = getSomething()) && is_array($things));
Salin selepas log masuk

当然,更好的风格是用typehinting代替is_array,一定是array且一定定义过,情况好得多


关于官方手册中empty行为描述的不完整,已经补充评论了,各位有空帮忙upvote

if (count($arr)) {
    // 数组不为空
}
Salin selepas log masuk

效果完全一样

写代码要严谨:

<code>if(is_array($arr) && !$arr) { 
    do something
}</code>
Salin selepas log masuk

答案写到评论里面了。

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Konfigurasi Projek CakePHP Konfigurasi Projek CakePHP Sep 10, 2024 pm 05:25 PM

Dalam bab ini, kita akan memahami Pembolehubah Persekitaran, Konfigurasi Umum, Konfigurasi Pangkalan Data dan Konfigurasi E-mel dalam CakePHP.

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Penghalaan CakePHP Penghalaan CakePHP Sep 10, 2024 pm 05:25 PM

Dalam bab ini, kita akan mempelajari topik berikut yang berkaitan dengan penghalaan ?

CakePHP Bekerja dengan Pangkalan Data CakePHP Bekerja dengan Pangkalan Data Sep 10, 2024 pm 05:25 PM

Bekerja dengan pangkalan data dalam CakePHP adalah sangat mudah. Kami akan memahami operasi CRUD (Buat, Baca, Kemas Kini, Padam) dalam bab ini.

Pengesah Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

See all articles