1

我今天在我的代码库中看到了这个:

if (isset($purchase_data['buyer_tracking_address_id']) && $purchase_data['buyer_tracking_address_id']) {
    // do something
}

为什么需要同时检查这两个条件?只使用第一个子句还不够吗?

4

1 回答 1

0

只使用第一个子句还不够吗?

编辑我看到你的问题的上下文在我输入这个答案时发生了变化。我认为aynber 的评论回答了你的问题。


isset实际上只是在下一个操作尝试访问它之前检查数组键buyer_tracking_address_id是否存在。如果它不存在,isset将返回 false 并阻止下一个条件运行。

如果没有isset,如果您尝试访问数组键buy_tracking_address_id并且它不存在,PHP 会抛出警告。

警告:未定义的数组键“buyer_tracking_address_id”

以下代码将在 PHP 7 中引发通知,并在 PHP 8 中引发警告

<?php

$purchase_data = [
    'buyer_tracking_address_id' => '12345'    
];

if ($purchase_data['doesnt_exist']) {
    // do something
}

还值得阅读和理解三元运算符和空值合并运算符,因为它们通常用于访问未知的数组键。

于 2021-07-16T18:06:33.513 回答