如果字符串不匹配 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'
这里的好处是您可以设置 $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])){
//....
}
这是我用来检查 $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'
这里的好处是您可以设置 $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])){
//....
}