PHP:如何更简洁判断多个qX变量是否存在值为'yes'?
更优的实现方法
当然有更简洁高效的写法!你的数组结构里每个qX字段都是嵌套数组,实际值存在qX[0]['value']里,不用一个个写||判断,试试下面几种方案:
方案1:循环遍历(性能最优,提前终止)
这种方法会在找到第一个yes时立刻停止遍历,适合需要高效判断的场景:
$hasYes = false; // 遍历q1到q12 for ($i = 1; $i <= 12; $i++) { $key = "q{$i}"; // 确保数组里存在这个key,避免报错 if (isset($yourArray[$key][0]['value']) && $yourArray[$key][0]['value'] === 'yes') { $hasYes = true; break; // 找到第一个yes就跳出循环,不用继续检查 } } if ($hasYes) { // 至少一个yes的逻辑 }
方案2:利用数组函数(代码更简洁)
如果你喜欢更简洁的函数式写法,可以先提取所有qX的value,再检查是否包含yes:
// 先收集所有q1到q12的value值 $qValues = []; for ($i = 1; $i <= 12; $i++) { $key = "q{$i}"; if (isset($yourArray[$key][0]['value'])) { $qValues[] = $yourArray[$key][0]['value']; } } // 检查数组中是否存在'yes' if (in_array('yes', $qValues)) { // 至少一个yes的逻辑 }
或者用array_reduce一步完成(稍微进阶一点):
$hasYes = array_reduce(range(1, 12), function($carry, $i) use ($yourArray) { $key = "q{$i}"; return $carry || (isset($yourArray[$key][0]['value']) && $yourArray[$key][0]['value'] === 'yes'); }, false); if ($hasYes) { // 至少一个yes的逻辑 }
小提示
- 记得加上
isset()判断,避免数组索引不存在时抛出警告 - 如果你的数组里只有q1到q12是需要检查的字段,也可以先过滤出所有以
q开头的键再遍历,但直接循环q1到q12会更直接可控
内容的提问来源于stack exchange,提问作者pee2pee
相关产品推荐
相关产品推荐

