PHP中foreach遍历数组时如何比较值找出最大值并将对应文本标绿
实现方案
要实现最大值对应文本标绿的效果,按以下逻辑处理即可:
- 遍历开始前,先提取所有数组项的
nilai字段值,计算出全局最大值,避免遍历过程中重复计算 - 遍历渲染时,判断当前项的
nilai是否等于全局最大值,匹配则给对应label标签加绿色文字样式 - 额外修正原代码的隐藏问题:原代码中单选框的
id和label的for属性写死为固定值,多选项会出现属性冲突导致点击失效,这里用遍历的$key拼接生成唯一id
完整可运行代码如下:
<?php // 提前计算所有nilai字段的最大值 $maxNilai = max(array_column($res['method']['list'], 'nilai')); foreach($res['method']['list'] as $key=>$row) { ?> <div class="form-check"> <input class="form-check-input" type="radio" name="flexRadioDefault" id="flexRadioDefault_<?php echo $key; ?>"> <label class="form-check-label" for="flexRadioDefault_<?php echo $key; ?>" <?php if($row['nilai'] == $maxNilai) echo 'style="color: green;"'; ?>> <?php echo $row['nilai']; ?> </label> </div> <?php } ?>
说明:如果不想用内联样式,也可以把绿色样式写到自定义CSS类里,判断命中时给label加对应class即可,核心判断逻辑完全一致。如果存在多个项的
nilai同为最大值的情况,该逻辑会自动给所有最大值项标绿,符合规则要求。
内容的提问来源于stack exchange,提问作者hellows
相关产品推荐
相关产品推荐

