如果字符串不匹配 PHP 中的 3 个选项之一

If a string is not matching one of 3 option in PHP

这是我用来检查 $A 是否与 $B

不匹配的代码
if($A!=$B) {
    $set = array();
    echo $val= str_replace('\/', '/', json_encode($set));
    //echo print_r($_SERVER);
    exit;
}

现在我需要这个条件的反义词:($A 需要匹配其中一个 $B$C$D

查看某个值是否与多个值之一匹配的简单快捷方式,您可以将要比较的值($B$C$D)放入数组中然后使用 in_array() 查看原始值 ($A) 是否与其中任何一个匹配。

if (in_array($A, [$B, $C, $D])) {
   // ...
}

如果您不希望它与 $B$C$D 中的 任何 匹配,只需使用 !:

if (!in_array($A, [$B, $C, $D])) {
   // ...
}

您可以使用array_search

$B = 'B';
$C = 'C';
$D = 'D';

//match B
$A = 'B';

$options = [$B, $C, $D];

if (false !== ($index = array_search($A, $options ))) {
     echo "Match: {$index} '{$options[$index]}'";
}

输出

Match: 0 'B'

Sandbox

这里的好处是您可以设置 $index 并使用它来判断哪个匹配。

请注意,您必须使用 false !==,因为数组搜索 returns 匹配发生的索引,因此它可能发生在索引 0 的第一个数组元素上。正如我们所知,PHP 可以将 0 视为 false(在这种情况下,条件会在应该通过时失败)。但是,当我们使用严格类型检查时 PHP 也会比较类型和 INT 0 不是 BOOL false(通过条件)。

供参考。

http://php.net/manual/en/function.array-search.php

另一种可能是最有效的方法是使用 isset,并使用键而不是值:

$options = [$B=>1,$C=>1,$D=>1]; //values don't matter
if(!isset($options[$A])){
    //....
}