下面的php代码有什么特殊情况吗?

下面的php代码有什么特殊情况吗?,php,Php,原始代码: if (isset($_REQUEST['data'])) { $data = $_REQUEST['data']; $data = json_decode($data); if ($data->mail == '(null)') { $data->mail = ''; } if ($data->identity == '(null)') {

原始代码:

if (isset($_REQUEST['data'])) {

        $data = $_REQUEST['data'];

        $data = json_decode($data);

        if ($data->mail == '(null)') {
            $data->mail = '';
        }

        if ($data->identity == '(null)') {
            $data->identity = '';
        }

}
我理解上面的代码如下

if (isset($_REQUEST['data'])) {

        $data = $_REQUEST['data'];

        $data = json_decode($data);


        if ($data->mail == '') {
            $data->mail = '';
        }

        if ($data->identity == '') {
            $data->identity = '';
        }

}

为什么他用“null”代替邮件中的身份变量检查?这是我现有的代码。我认为“null”是一个字符串。他为什么要将此与“null”字符串进行比较。是为了避免使用“null”名称吗?

这将检查值是否等于字符串null


这将检查该值是否为空

$data->mail == ''

它们不是等价的。

可能是null属性的值必须作为字符串“null”在$\u请求['data']中发送,因此原始代码必须这样编写。如果您能够将null值设置为空字符串或null,那么下面的代码可能工作得很好

if (isset($_REQUEST['data'])) {

        $data = $_REQUEST['data'];

        $data = json_decode($data);
        if($data){ // Error handling if json_decode gives null for invalid json encoded string
            if (!$data->mail) {
                $data->mail = '';
            }
            if (!$data->identity) {
                $data->identity = '';
            }
        }

}

在第一个比较代码中,$data->mail正好是null字符串。它与null无关,因为这是一个字符串。另外,后面的示例没有意义,检查它是否为空,然后将其设置为空,这没有任何作用。这是多余的。
if (isset($_REQUEST['data'])) {

        $data = $_REQUEST['data'];

        $data = json_decode($data);
        if($data){ // Error handling if json_decode gives null for invalid json encoded string
            if (!$data->mail) {
                $data->mail = '';
            }
            if (!$data->identity) {
                $data->identity = '';
            }
        }

}