You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:19:27