php判断一个数组为空if(!array())好,还是if(empty(array()))?
php判断一个数组为空if(!array())好,还是if(empty(array()))?
回复内容:
php判断一个数组为空if(!array())好,还是if(empty(array()))?
首先习惯性地,RTFM
没有好不好,只有合适不合适
!
和empty()
行为有什么区别?
!
相当于转换为布尔值后取反,结果可以参照手册的布尔值转换部分empty
行为同样见手册
他们的行为有3个差异
空SimpleXML (经过实验,发现这是文档问题,php5.1后,两者行为是一致的)
未定义的变量 (
!$undefined
会产生error,empty($undefined)
则返回true) 和isset
类似,这个特性对于访问复杂结构的数组或对象成员的时候特别友好(empty($arr['userModel']->userFriends)
)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));
当然,更好的风格是用typehinting代替is_array
,一定是array且一定定义过,情况好得多
关于官方手册中empty行为描述的不完整,已经补充评论了,各位有空帮忙upvote
if (count($arr)) { // 数组不为空 }
效果完全一样
写代码要严谨:
<code>if(is_array($arr) && !$arr) { do something }</code>
答案写到评论里面了。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

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

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

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

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

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

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

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

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.
