【问题标题】:Alternative to assign empty value if the parameter not exist in php如果参数在 php 中不存在,则替代分配空值
【发布时间】:2018-09-04 06:37:29
【问题描述】:

我从一个服务器 URL 收到一些 JSON 响应,响应参数可能会根据用户凭据而改变,

例如,有时它会返回用户状态,有时它会返回用户状态两者具有相同的值,但我需要处理,如果任何状态参数默认不来取空,所以我尝试了以下逻辑。

$centre_jurisdiction = $data['data']['ctj'] ?? "";
$state_jurisdiction = $data['data']['stj'] ?? "";

上述逻辑在我的本地主机中运行良好,但在我的实时服务器中无法正常运行,然后我找到了原因,它在我的实时服务器中无法运行,因为我的实时服务器 PHP 版本是 5.0,它在我的本地主机中运行,因为我的本地主机 PHP 版本是 7.0。

我需要让这个逻辑在我的实时服务器中也能工作,而无需更新我的实时服务器 PHP 版本,因为一些旧项目也托管在该服务器中,PHP 5 将支持这些项目。

有没有其他方法可以处理这个逻辑?谢谢!

【问题讨论】:

    标签: php json post slim


    【解决方案1】:

    您在使用 PHP 5 时会遇到问题,因为null coalescing operator 是在 PHP 7 中引入的。

    相当于使用条件运算符和isset

    $centre_jurisdiction = isset($data['data']['ctj']) ? $data['data']['ctj'] : "";
    $state_jurisdiction = isset($data['data']['stj']) ? $data['data']['stj'] : "";
    

    【讨论】:

      【解决方案2】:

      空合并运算符“??”只是 PHP 7 中添加的语法糖;见Manual。您也可以将其视为“isset 三元”运算符;见RFC

      所以,好消息是可以为 PHP 5 重写代码如下:

      $centre_jurisdiction = isset($data['data']['ctj'])? $data['data']['ctj'] : "";
      
      $state_jurisdiction = isset($data['data']['stj'])?  $data['data']['stj'] : "";
      

      注意:逻辑是相同的,但语法更短,因此在 PHP 7 中更甜美。PHP 5 代码简单地使一切变得明确。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-15
        • 1970-01-01
        • 2019-02-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多