$applicantName = (isset($params['applicant']['name']) && $params['applicant']['name'] != '') ? $params['applicant']['name'] :
((isset($simulationCustomer['fullname']) && $simulationCustomer['fullname'] != '') ? $simulationCustomer['fullname'] :
($simulationCustomer['name'] ?? ''));我今天写了这段代码,当然感觉不太对。在JavaScript中编写要容易得多,问题是联合运算符只适用于空值。
有没有一种更容易理解的方式来写这篇文章?
发布于 2021-09-13 22:20:03
使用array_filter怎么样?
$applicantName = array_values(array_filter([
$params['applicant']['name'] ?? '',
$simulationCustomer['fullname'] ?? ''
]))[0] ?? '';array_values仅用于重置索引键。
或
$names = array_filter([
$params['applicant']['name'] ?? '',
$simulationCustomer['fullname'] ?? ''
]);
$applicantName = reset($names) ?: '';发布于 2021-09-13 21:58:45
如果只是想检查是否设置了变量,可以使用?? null合并操作符。但是,如果您希望将''视为未设置,则需要使用!empty(),而这排除了使用任何条件简写的可能性。最好的做法是将isset()和!= ''测试组合到!empty()中
$applicantName = !empty($params['applicant']['name']) ? $params['applicant']['name'] :
(!empty($simulationCustomer['fullname']) ? $simulationCustomer['fullname'] :
($simulationCustomer['name'] ?? ''));https://stackoverflow.com/questions/69169437
复制相似问题