如何修改PHP代码片段以实现多值匹配(1、2、4等)?
搞定PHP多值匹配的问题
嘿,先给你提个醒:你代码里的if ($thisorthat = "1")是个小坑——这是赋值操作不是比较!得改成==(松散比较)或者更严谨的===(严格比较,推荐,能同时校验值和类型,避免比如字符串"1"和数字1被误判相等)。
接下来,要匹配多个值(比如1和2,或者1、2、4这类组合),有几种实用的方法,看你需求选:
方法1:用in_array()(最直观,适合多值场景)
把要匹配的所有值放进一个数组,用in_array()判断当前值是否在数组里就行。比如要匹配字符串"1"和"2":
foreach ($values as $v) { $thisorthat = $v[$thisorthatKey]; // 第三个参数true开启严格模式,确保值和类型都匹配 if (in_array($thisorthat, ["1", "2"], true)) { continue; } // 这里写你的其他业务逻辑 }
如果是匹配数字1、2、4,就把数组改成[1,2,4]就行。
方法2:用逻辑或||(适合值很少的情况)
如果要匹配的值只有两三个,直接写多个条件并列也很清楚:
foreach ($values as $v) { $thisorthat = $v[$thisorthatKey]; if ($thisorthat === "1" || $thisorthat === "2" || $thisorthat === "4") { continue; } // 其他逻辑... }
方法3:用switch语句(适合后续要扩展复杂逻辑的场景)
如果之后可能要给不同的值加不同的处理,switch会更灵活:
foreach ($values as $v) { $thisorthat = $v[$thisorthatKey]; switch ($thisorthat) { case "1": case "2": case "4": continue 2; // 这里要写continue 2,不然只会跳出switch,外层的foreach还会继续当前迭代 default: // 你的默认逻辑 break; } }
这里的continue 2是关键,因为switch是嵌套在foreach里的,数字2表示跳到外层foreach的下一次循环。
最后再强调一遍:千万不要用=做比较,不然不仅逻辑错,还会把$thisorthat强制改成"1",完全偏离你的需求哦!
内容的提问来源于stack exchange,提问作者Henny1999
相关产品推荐
相关产品推荐

