如何将变量值与关联数组值比较并将结果存入指定变量?
如何将变量值与关联数组的值对比并得到对应等级
没问题,我来帮你搞定这个需求!核心思路就是遍历你的关联数组,把$score和数组里的阈值/区间做比较,匹配成功后把对应的等级存入$grade就行。下面我结合两种常见的关联数组结构给你具体示例:
情况1:关联数组是「等级 => 最低分数阈值」
这种结构最常用,比如规定95分及以上拿A+,90-94拿A,以此类推:
// 定义关联数组,键是等级,值是对应等级的最低分数要求 $grades = [ 'A+' => 95, 'A' => 90, 'B+' => 85, 'B' => 80, 'C+' => 75, 'C' => 70, 'D' => 60, 'F' => 0 ]; $score = 97; // 你的目标分数变量 $grade = 'F'; // 设置默认等级,避免没有匹配项的情况 // 遍历数组,找到第一个符合条件的最高等级 foreach ($grades as $level => $threshold) { if ($score >= $threshold) { $grade = $level; break; // 找到最高等级后立刻停止遍历,提升效率 } } echo $grade; // 这里会输出:A+
注意:这里的数组顺序必须是从高等级到低等级排列,这样遍历的时候第一个匹配的就是分数对应的最高等级,不会被低等级覆盖。
情况2:关联数组是「分数区间 => 等级」
如果你的数组是用分数区间作为键的,比如'95-100' => 'A+',那可以拆分区间后再比较:
$grades = [ '95-100' => 'A+', '90-94' => 'A', '85-89' => 'B+', '80-84' => 'B', // 其他区间... ]; $score = 97; $grade = 'F'; foreach ($grades as $range => $level) { // 把区间字符串拆成最小和最大分数 list($minScore, $maxScore) = explode('-', $range); // 判断当前分数是否在区间内 if ($score >= $minScore && $score <= $maxScore) { $grade = $level; break; } } echo $grade; // 同样会输出:A+
不管你的关联数组结构是哪种,核心逻辑都是:遍历数组,将$score与数组中的值(或拆分后的值)做比较,匹配成功后将对应等级赋值给$grade。如果你的数组结构特殊,只需要调整比较的逻辑就可以啦。
内容的提问来源于stack exchange,提问作者Zestyy99
相关产品推荐
相关产品推荐

