Inhaltsverzeichnis
php判断一个数组为空if(!array())好,还是if(empty(array()))?
回复内容:
Heim Backend-Entwicklung PHP-Tutorial 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));
Nach dem Login kopieren

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


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

if (count($arr)) {
    // 数组不为空
}
Nach dem Login kopieren

效果完全一样

写代码要严谨:

<code>if(is_array($arr) && !$arr) { 
    do something
}</code>
Nach dem Login kopieren

答案写到评论里面了。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

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

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

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.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

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

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

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

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

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

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

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

CakePHP arbeitet mit Datenbank CakePHP arbeitet mit Datenbank Sep 10, 2024 pm 05:25 PM

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

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

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

See all articles