第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

php判斷一個(gè)數(shù)組為空if(!array())好,還是if(empty(array()))?

php判斷一個(gè)數(shù)組為空if(!array())好,還是if(empty(array()))?

慕田峪4524236 2019-02-04 10:06:45
php判斷一個(gè)數(shù)組為空if(!array())好,還是if(empty(array()))?
查看完整描述

3 回答

?
翻閱古今

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊

首先習(xí)慣性地,RTFM

沒有好不好,只有合適不合適

!empty()行為有什么區(qū)別?

他們的行為有3個(gè)差異

  1. 空SimpleXML (經(jīng)過實(shí)驗(yàn),發(fā)現(xiàn)這是文檔問題,php5.1后,兩者行為是一致的)

  2. 未定義的變量 (!$undefined會產(chǎn)生error,empty($undefined)則返回true) 和isset類似,這個(gè)特性對于訪問復(fù)雜結(jié)構(gòu)的數(shù)組或?qū)ο蟪蓡T的時(shí)候特別友好(empty($arr['userModel']->userFriends)

  3. php5.5之前,empty只接受變量,不接受表達(dá)式(比如函數(shù)的返回結(jié)果empty(getSomething())

評論里也有人說了,因?yàn)閑mpty是語言結(jié)構(gòu),并沒有函數(shù)調(diào)用的巨大開銷,所以兩者的性能的差異不會太大,另外現(xiàn)代PHP對于這種小的開銷也已經(jīng)優(yōu)化地很好了,所以這里不怎么需要考慮性能。結(jié)合上面的分析來說,empty是優(yōu)于!的,除非你的php版本比較老,而又需要對表達(dá)式直接判斷,不希望多加一個(gè)變量

但是,如果你并不知道你手里的東西是不是數(shù)組,建議參考 @dreamans 的答案,考慮$arr并非數(shù)組的場景做合適的處理。

因?yàn)?code>is_array并不具有empty的耐受未定義的特性,我推薦這種寫法empty($arr) && is_array($arr)
能夠嚴(yán)謹(jǐn)?shù)刂С指鞣N場景

if(empty($undefined) && is_array($undefined));//未定義變量if(empty($arr['userModel']->userFriends) && is_array($arr['userModel']->userFriends));//(潛在)未定義成員//或者反向場景,判斷有內(nèi)容數(shù)組,結(jié)合表達(dá)式的能力if(!empty($things = getSomething()) && is_array($things));

當(dāng)然,更好的風(fēng)格是用typehinting代替is_array,一定是array且一定定義過,情況好得多


關(guān)于官方手冊中empty行為描述的不完整,已經(jīng)補(bǔ)充評論了,各位有空幫忙upvote


查看完整回答
反對 回復(fù) 2019-03-16
?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊

寫代碼要嚴(yán)謹(jǐn):

if(is_array($arr) && !$arr) { 
    do something
}


查看完整回答
反對 回復(fù) 2019-03-16
?
開滿天機(jī)

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊

if (count($arr)) {    // 數(shù)組不為空}


查看完整回答
反對 回復(fù) 2019-03-16
  • 3 回答
  • 0 關(guān)注
  • 1479 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號