PHP:冗余检查是否为空数组/集合?

时间:2019-04-24 16:44:18

标签: php laravel

我继承了Laravel项目,但我仍在继续学习。我在代码中看到只有在W: Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/InRelease Unable to find expected entry 'main/binary-amd64/Packages' in Release file (Wrong sources.list entry or malformed file) W: Failed to fetch http://www.rabbitmq.com/debian/dists/testing/main/binary-amd64/Packages Undetermined Error [IP: 104.20.62.197 80] E: Some index files failed to download. They have been ignored, or old ones used instead. 存在的情况下才检查运行块,但检查是否为:

$patient->records

那是多余的还是为空并且count()检查2个单独的东西?

编辑:已从if(! empty($patient->records) && $patient->records->count() > 0)修正为> 1

3 个答案:

答案 0 :(得分:1)

我认为这是多余的。 $ Patient-> records是一个集合。 我这样使用。

  super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713")
    adView.loadAd(AdRequest.Builder().build())

答案 1 :(得分:1)

如果可能无法定义$病人或记录(假设是$病人的财产),则empty($patient->records)很有用,因为$病人->记录->计数()本身会导致致命错误: Uncaught Error: Call to a member function count() on null in ...

在if子句中使用empty($patient->records),即使在$病人或记录未定义的情况下,也可以避免致命错误。

空值表示正在检查$ Patient-> records是否已定义,而不是空值,而子句的count()部分是对count方法结果的更具体的检查。在$病人或记录未定义的情况下,该方法不可用。

答案 2 :(得分:0)

是的,这是多余的。

然后,为什么有人可以用这种方式编写代码?

可能是,在检查集合的长度之前,他想确保它不是null,尽管在这种情况下我更喜欢使用is_null()isset()方法。即使在他脑海中(那很安全),还是没有必要的。因为如果patientrecords之间的关系定义正确(一对多=> hasMany()),那么$patient->records将始终返回集合,但永远不会返回null。即使它是一个空集合,您仍然可以安全地使用count()方法,而无需检查records是否为空,因为如果我们返回一个hasMany()关系,它就永远不会为空。

什么是更好的解决方案

您可以使用相同的条件删除空的检查部分,如下所示:

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

为了使其更具可读性,Laravel集合为我们提供了一种非常不错的方法,称为isNotEmpty()

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

这是我更喜欢使用的。因为我们编写代码是为了让其他程序员(而非计算机)可读。计算机甚至可以理解二进制,但我们不会编写二进制。