亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

PHP:冗余檢查是否為空數組/集合?

PHP:冗余檢查是否為空數組/集合?

PHP
大話西游666 2021-04-26 17:30:58
我繼承了Laravel項目,現在仍在學習中。我在代碼中看到只有在$patient->records存在塊的情況下才檢查運行塊,但檢查是否為:if(! empty($patient->records) && $patient->records->count() > 0)是多余的還是為空,并且count()檢查2個單獨的東西?編輯:從改正> 1為> 0
查看完整描述

3 回答

?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

我認為這是多余的。$ Patient-> records是一個集合。我這樣使用。


if($patient->records->count()) 

{

// has records

}


查看完整回答
反對 回復 2021-05-14
?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

如果可能無法定義empty($patient->records)$ Patient或記錄(假定為$ Patient的屬性),則這很有用,因為$ Patient-> records-> count()本身會導致致命錯誤: Uncaught Error: Call to a member function count() on null in ...

隨著empty($patient->records)在if語句,可避免致命的錯誤,甚至在情況$患者或記錄是不明確的。

空值表示檢查$ Patient-> records是否已定義,而不是空值,而子句的count()部分是對count方法結果的更具體的檢查。在$病人或記錄未定義的情況下,該方法不可用。


查看完整回答
反對 回復 2021-05-14
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

是的,這是多余的。

那么,為什么有人可以用這種方式編寫代碼?

可能是,在檢查集合的長度之前,他想確保它不是,null盡管在這種情況下我不喜歡使用is_null()orisset()方法。即使他腦子里有(一點都不安全)的想法,還是沒有必要的。因為如果之間的關系patientrecords正確定義(一對多=> hasMany()),那么$patient->records總是會返回一個集合但不能為null。即使它是一個空集合,您仍然可以count()安全地使用方法,而無需檢查as是否records為null,因為如果我們返回一個hasMany()關系,它永遠不會為null 。

有什么更好的解決方案

您可以使用相同的條件刪除空的檢查部分,如下所示:

if($patient->records->count() > 0)

為了使它更具可讀性,Laravel集合為我們提供了一個非常好的方法,稱為isNotEmpty()

if($patient->records->isNotEmpty())

這是我更喜歡使用的。因為我們編寫代碼是為了使其他程序員(而非計算機)可以讀取。計算機甚至可以理解二進制,但我們不會編寫二進制。


查看完整回答
反對 回復 2021-05-14
  • 3 回答
  • 0 關注
  • 168 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號