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

如何精简含大量if判断的PHP代码?

精简重复if判断的PHP代码方案

当然有办法搞定这段重复的代码!你现在的写法全是机械重复的判断逻辑,我们可以通过数组+循环的方式彻底简化它,而且完全保留原有的功能。

方案一:变量名与表头文本一致时的简化

因为你的变量名和要输出的表头文本几乎完全对应(比如$CType对应表头CType ),我们可以把所有需要检查的变量名放进一个数组,然后循环处理:

// 把所有需要检查的变量名列在这里
$headerVars = [
    'CType', 'CNr', 'CValFrom', 'CValUntil', 'CLTCCNr', 'CLTCCTime',
    'CIOEntryOff', 'CIOExitOff', 'CICoded', 'CCodingDate', 'CPrice',
    'CPricePyed', 'CDeposit', 'CDepositPayed', 'CLastCCode', 'CLastLPlate',
    'CIOOffNextUse', 'CLastEntryTime', 'CLastExitTime', 'CLastPTime'
];

foreach ($headerVars as $varName) {
    // 检查变量存在且不为NULL(和原代码的判断逻辑完全一致)
    if (isset($$varName) && $$varName !== NULL) {
        echo '<th align="right">' . $varName . ' </th>';
    }
}

这里用到了PHP的可变变量$$varName,它会自动把字符串$varName转换成对应的变量(比如$varName是CType时,$$varName就等于$CType)。

方案二:表头文本与变量名可能不同时的灵活写法

如果以后你需要修改表头文本(比如把CPricePyed改成已支付价格),可以用关联数组来存储变量名和对应的表头文本,扩展性更强:

// 键是变量名,值是要显示的表头文本
$headerMap = [
    'CType' => 'CType ',
    'CNr' => 'CNr ',
    'CValFrom' => '数值起始 ',
    'CValUntil' => '数值截止 ',
    // 其他变量按同样格式补充即可
];

foreach ($headerMap as $varName => $displayText) {
    if (isset($$varName) && $$varName !== NULL) {
        echo '<th align="right">' . $displayText . '</th>';
    }
}

为什么这样更好?

  • 代码量骤减:从几十行重复的if判断变成几行循环,可读性更强
  • 维护成本降低:以后要添加/删除表头,只需要修改数组,不用复制粘贴一堆代码
  • 逻辑统一:所有判断逻辑集中在一处,避免漏写或写错判断条件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:18:37