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>
答案写到评论里面了。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

Das Arbeiten mit der Datenbank in CakePHP ist sehr einfach. In diesem Kapitel werden wir die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) verstehen.

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.
