如果参数在php中不存在,则可以指定空值

如果参数在php中不存在,则可以指定空值,php,json,post,slim,Php,Json,Post,Slim,我从一个服务器URL得到一些JSON响应,响应参数可能会根据用户凭据而改变 例如,有时它会返回用户状态,有时它会返回客户状态,两者都有相同的值,但我需要处理,就像任何状态参数默认情况下不出现一样,取空,所以我尝试了下面的逻辑 $centre_jurisdiction = $data['data']['ctj'] ?? ""; $state_jurisdiction = $data['data']['stj'] ?? ""; 上面的逻辑在我的localhost中运行良好,但在我的live ser

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

例如,有时它会返回用户状态,有时它会返回客户状态,两者都有相同的值,但我需要处理,就像任何状态参数默认情况下不出现一样,取空,所以我尝试了下面的逻辑

$centre_jurisdiction = $data['data']['ctj'] ?? "";
$state_jurisdiction = $data['data']['stj'] ?? "";
上面的逻辑在我的localhost中运行良好,但在我的live server中不工作,然后我找到了原因,它在我的live server中不工作,因为我的live server PHP版本是5.0,在我的localhost中工作,因为我的localhost PHP版本是7.0

我需要让这个逻辑也在我的live server中工作,而不必更新我的live server PHP版本,因为一些旧项目也托管在该服务器中,而这些项目将在PHP5中得到支持


有没有其他办法来处理这种逻辑?谢谢

您将面临PHP5的问题,因为PHP7中引入了

与此等价的方法是使用条件运算符和


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

因此,好消息是,可以将PHP 5的代码重写如下:

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

$state_jurisdiction = isset($data['data']['stj'])?  $data['data']['stj'] : "";
注意:逻辑是相同的,但语法更短,因此在PHP7中更甜。PHP5代码只是将所有内容显式化

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

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