【发布时间】:2021-09-13 21:44:39
【问题描述】:
$applicantName = (isset($params['applicant']['name']) && $params['applicant']['name'] != '') ? $params['applicant']['name'] :
((isset($simulationCustomer['fullname']) && $simulationCustomer['fullname'] != '') ? $simulationCustomer['fullname'] :
($simulationCustomer['name'] ?? ''));
我今天是这个代码,当然感觉不对。在 JavaScript 中写起来会容易得多,在 PHP 中的问题是合并运算符仅适用于空值。
有没有办法以更容易理解的方式来写这个?
【问题讨论】:
-
即使在 PHP 5 中,您也可以使用
!empty()组合isset()和!= '' -
新的 null 合并运算符适用于 null 值,但不适用于
"" -
我猜
($simulationCustomer['fullname']??'')?:($simulationCustomer['name'] ?? '')会缩短第一个三进制的最后一位。基本情况可以从 PHP 还没有的数组的 nullsafe 运算符中受益,因此目前在 PHP 8 中,使用对象和执行($params?->applicant?->name??($simulationCustomer['fullname']??'')?:($simulationCustomer['name'] ?? '')会更短。这里的魔力是a?:b和a?a:b一样