如果语句因条件太多而中断

If statement breaks with too many conditions

我有一个 if 语句,例如

if ( $id == '2781' || $id == '1947' || $id == '516' || $id == '3200' || $id == '237' || $id == '3207' || $id == '3205' || $id == '2647' || $id == '516' || $id = '4571' ) {
    // Do something
}

但是 if 语句似乎因为条件的数量而失败(例如,它总是做某事,而不仅仅是指定的 ID)。我可以删除其中的一些并且它按预期工作。我该如何解决这个问题?

试试这个,in_array 非常适合这种情况:

if (in_array((int)$id, array(2781, 1947, 516, 3200, 237, 3207, 3205, 2647, 516, 4571))) {
    // Do something
}

此外,您的代码中缺少一个“=”。

你打错了:

... || $id = '4571' ) ...

正在将 '4571' 的值分配给 $id。您必须使用比较运算符:

... || $id == '4571' ) ...

这就是为什么我喜欢使用 in_array:

$availableIds = ['2781', '1947', '516', '3200', '237', '3207', '3205', '2647', '516', '4571'];

if(in_array($id, $availableIds)) {
...
}