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

如何简化嵌套if语句以支持扩展更多字符串变量?

问题描述

仅3个字符串变量就写出了嵌套复杂的判断逻辑,请问怎么重构代码,才能轻松扩展到10个以上变量?

原代码:

$x = 'a';
$y = 'b';
$z = 'c';

if ($x){
  if($y){
     if($z){
        return $x.$y.$z;
     }
     return $x.$y;
  } 
  return $x;
}

if($y){
  if($z){
    return $y.$z;
  }
  return $y;
}

if($z){
  return $z;
}

return "";
优化方案

把变量按优先级顺序存入数组,通过遍历数组实现判断逻辑,后续扩展只需向数组添加变量,无需修改核心逻辑。

逻辑说明

原代码的本质是:

  1. 按x→y→z的优先级,跳过开头的空变量,找到第一个非空变量
  2. 从该变量开始,依次拼接后续的非空变量,直到遇到第一个空变量就停止
  3. 没有非空变量则返回空字符串

重构后代码

// 按优先级顺序存入数组,扩展时直接追加新变量即可
$vars = [$x, $y, $z];
$result = '';

foreach ($vars as $var) {
    // 还没找到第一个非空变量时,跳过空值
    if (empty($var) && $result === '') {
        continue;
    }
    // 已经开始拼接后,遇到空值就停止
    if (empty($var)) {
        break;
    }
    // 拼接非空变量
    $result .= $var;
}

return $result;

更简洁的写法

$vars = [$x, $y, $z];
$result = '';

foreach ($vars as $var) {
    if (empty($var)) {
        $result ? break : continue;
    }
    $result .= $var;
}

return $result;

这样扩展到10个变量时,只需要修改$vars数组,比如$vars = [$x, $y, $z, $d, $e, $f, $g, $h, $i, $j];,循环逻辑完全不用改,代码的可维护性和扩展性都大幅提升。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:52:43