如何解析8段分类器编码?多匹配场景简化实现方法咨询
解决方案:映射数组+遍历检测
你不需要逐一判断所有数字组合,只需要先定义数字与输出文本的对应关系,再遍历检测每个数字是否存在于编码中,最后收集所有符合条件的结果即可,代码简洁还能轻松扩展。
代码示例
$check = "1-3--6--"; // 定义8个数字对应的输出文本,根据你的实际需求调整内容 $digitMap = [ 1 => 'a', 2 => 'b', 3 => 'c', 4 => 'd', 5 => 'e', 6 => 'f', 7 => 'g', 8 => 'h' ]; $matchedOutputs = []; foreach ($digitMap as $digit => $outputText) { // 显式将数字转为字符串,避免类型匹配问题 if (str_contains($check, (string)$digit)) { $matchedOutputs[] = $outputText; } } // 输出最终结果:有匹配项则用逗号分隔,无匹配则输出'no' echo !empty($matchedOutputs) ? implode(', ', $matchedOutputs) : 'no';
代码说明
- 映射数组:
$digitMap把每个数字和对应的输出文本绑定,后续要修改或新增规则,直接在这里调整即可,不用改动检测逻辑。 - 遍历检测:循环遍历每个数字,用
str_contains检查编码是否包含该数字,符合条件就把对应文本加入结果数组。 - 结果输出:用
implode把结果数组转为逗号分隔的字符串,没有匹配项时输出'no'。
这种方式不管是单个数字还是多个数字组合的情况,都能自动处理,不用写一堆嵌套的if判断所有组合。
内容的提问来源于stack exchange,提问作者Sal
相关产品推荐
相关产品推荐

