You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP7.4有没有比isset加三元运算更优的数组与字符串值校验方案?

PHP数组非空字符串取值逻辑优化方案

原代码的核心逻辑是按优先级取第一个存在且为非空字符串的值,优先级顺序为:

  • $params['applicant']['name']
  • $simulationCustomer['fullname']
  • $simulationCustomer['name']
    全部不符合时返回空字符串。以下是几种更易读的实现方式:

方案1:封装通用工具函数(兼容全PHP版本,可复用性最高)

封装统一的取值函数,后续同类逻辑都可以直接调用,调用侧代码可读性极强:

/**
 * 按优先级取第一个存在且为非空字符串的数组值
 * @param array $candidates 候选配置,每一项格式为[目标数组, 键路径数组]
 * @param string $default 兜底默认值
 * @return string
 */
function get_first_non_empty_string(array $candidates, string $default = ''): string
{
    foreach ($candidates as [$targetArr, $keyPath]) {
        $value = $targetArr;
        foreach ($keyPath as $key) {
            if (!isset($value[$key])) {
                $value = null;
                break;
            }
            $value = $value[$key];
        }
        if (is_string($value) && $value !== '') {
            return $value;
        }
    }
    return $default;
}

调用代码:

$applicantName = get_first_non_empty_string([
    [$params, ['applicant', 'name']],
    [$simulationCustomer, ['fullname']],
    [$simulationCustomer, ['name']]
]);

优势:支持任意深度的数组取值,优先级顺序直观清晰,后续新增取值优先级只需要加一行配置即可。

方案2:平铺if-else写法(无需封装,适配所有场景)

如果不想单独封装工具函数,直接把嵌套三元改成平铺的if-else判断,逻辑顺序完全和优先级对应,没有嵌套成本:

$applicantName = '';
if (isset($params['applicant']['name']) && $params['applicant']['name'] !== '') {
    $applicantName = $params['applicant']['name'];
} elseif (isset($simulationCustomer['fullname']) && $simulationCustomer['fullname'] !== '') {
    $applicantName = $simulationCustomer['fullname'];
} elseif (isset($simulationCustomer['name'])) {
    $applicantName = $simulationCustomer['name'];
}

方案3:empty简化写法(仅适用于特定业务场景)

如果业务中不可能出现'0'这类被empty()判定为空的合法姓名字符串,可以用empty()简化判断:

// 注意:业务姓名不会为'0'时才可使用,否则会误过滤合法值
$applicantName = !empty($params['applicant']['name']) ? $params['applicant']['name'] : 
    (!empty($simulationCustomer['fullname']) ? $simulationCustomer['fullname'] : 
    ($simulationCustomer['name'] ?? ''));

内容的提问来源于stack exchange,提问作者JorgeeFG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 14:21:00