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

PHP测验/评估结果页变量不显示 重构后页面空白问题排查

问题原因

你的重构代码存在3个致命问题,直接导致页面空白无输出:

  • 执行顺序错误:你把结果变量的定义放在了判断输出逻辑的后面。PHP是自上而下顺序执行的,当你运行if ($blueLow && $redLow && $blackLow){echo $lowLowLow;}这段判断时,$lowLowLow、$lowLowMedium这些变量还没被定义,条件永远不成立,自然没有任何内容输出。
  • 维度等级变量未赋值:你在第一部分判断维度等级的代码里,只写了$blueLow;这类语句,这行代码没有任何实际作用——你既没有给这个变量赋值为true作为等级标记,也没有做任何输出操作,PHP会把未赋值的$blueLow/$redLow/$blackLow识别为null(等价于false),后续的组合判断全部失效。
  • 缺失边界兜底逻辑:三个维度的等级判断都没有写else兜底分支,如果用户得分超出你预设的区间(比如蓝色维度得分高于35),对应的等级变量会直接处于未定义状态,直接触发判断错误。
修正方案

调整代码执行顺序,给等级变量明确赋值,补上兜底逻辑即可,修正后的代码结构如下:

// 第1步:先定义所有结果模板(放在最前面,保证后续调用时变量已存在)
$lowLowLow = 
"<div id='results'>$blueTotal / $redTotal / $blackTotal</div>
<div id='explanation'>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce fringilla, turpis a ultricies ultricies, tellus nisi faucibus dui, ac lobortis.</div>";

$lowLowMedium = 
"<div id='results'>$blueTotal / $redTotal / $blackTotal</div>
<div id='explanation'>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce fringilla, turpis a ultricies ultricies, tellus nisi faucibus dui, ac lobortis.</div>";

$lowLowHigh = 
"<div id='results'>$blueTotal / $redTotal / $blackTotal</div>
<div id='explanation'>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce fringilla, turpis a ultricies ultricies, tellus nisi faucibus dui, ac lobortis.</div>";

// 第2步:计算每个维度的等级,给对应变量赋值布尔值标记
// 蓝色维度判断
if ($blueTotal >=0 && $blueTotal<=10){
    $blueLow = true;
    $blueMedium = false;
    $blueHigh = false;
} else if ($blueTotal >=11 && $blueTotal<=22){
    $blueLow = false;
    $blueMedium = true;
    $blueHigh = false;
} else if ($blueTotal >=23 && $blueTotal<=35){
    $blueLow = false;
    $blueMedium = false;
    $blueHigh = true;
} else {
    // 兜底逻辑,处理超出区间的得分
    $blueLow = false;
    $blueMedium = false;
    $blueHigh = true;
}

// 红色维度判断
if ($redTotal >=0 && $redTotal<=8){
    $redLow = true;
    $redMedium = false;
    $redHigh = false;
} else if ($redTotal >=9 && $redTotal<=15){
    $redLow = false;
    $redMedium = true;
    $redHigh = false;
} else if ($redTotal >=16 && $redTotal<=25){
    $redLow = false;
    $redMedium = false;
    $redHigh = true;
} else {
    $redLow = false;
    $redMedium = false;
    $redHigh = true;
}

// 黑色维度判断
if ($blackTotal >=0 && $blackTotal<=11){
    $blackLow = true;
    $blackMedium = false;
    $blackHigh = false;
} else if ($blackTotal >=12 && $blackTotal<=21){
    $blackLow = false;
    $blackMedium = true;
    $blackHigh = false;
} else if ($blackTotal >=22 && $blackTotal<=34){
    $blackLow = false;
    $blackMedium = false;
    $blackHigh = true;
} else {
    $blackLow = false;
    $blackMedium = false;
    $blackHigh = true;
}

// 第3步:匹配组合输出结果
if ($blueLow && $redLow && $blackLow){
    echo $lowLowLow;
} else if ($blueLow && $redLow && $blackMedium){
    echo $lowLowMedium;
} else if ($blueLow && $redLow && $blackHigh){
    echo $lowLowHigh;
}
// 后续其余得分组合,按照相同格式往下补else if分支即可

补充提示:如果调试时还是看不到输出,可以在代码开头加上error_reporting(E_ALL); ini_set('display_errors', 1);开启PHP错误显示,能直接看到未定义变量这类报错,快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:39:17