如果 php 中不存在参数,则替代分配空值

Alternative to assign empty value if the parameter not exist in php

我从一台服务器 URL 收到一些 JSON 响应,响应参数可能会根据用户凭据发生变化,

例如,有时它会 return 用户状态,有时它会将客户状态都具有相同的值但我需要处理,如果没有任何状态参数默认为空,所以我尝试了低于逻辑。

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

以上逻辑在我的本地主机上运行良好,但在我的实时服务器中不起作用,然后我找到了原因,它在我的实时服务器中不起作用,因为我的实时服务器 PHP 版本是 5.0,它是在我的本地主机上工作,因为我的本地主机 PHP 版本是 7.0.

我也需要在不更新我的实时服务器 PHP 版本的情况下使这个逻辑在我的实时服务器中工作,因为一些旧项目也托管在该服务器中,并且这些项目将在 PHP 5 中得到支持。

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

您在使用 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'] : "";

空合并运算符“??”只是在 PHP 7 中添加的语法糖;见 Manual. You can also think of it as the "isset ternary" operator; see the RFC.

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

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

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

注意:PHP7 中的逻辑是相同的,但语法更短,因此更甜美。PHP5 代码简单地使所有内容明确。