Если строка не соответствует одному из 3 вариантов в PHP - PullRequest
0 голосов
/ 01 января 2019

Это код, который я использовал для проверки, если $A не соответствует $B

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

Теперь мне нужно противоположное этому условию: ($A нужно соответствовать одномуиз них $B, $C или $D)

Ответы [ 2 ]

0 голосов
/ 01 января 2019

Вы можете использовать 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 !==, потому что поиск по массиву возвращает индекс, в котором произошло совпадение, так что это может произойти с первым элементом массива, который является индексом 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])){
    //....
}
0 голосов
/ 01 января 2019

Простой способ узнать, совпадает ли значение с одним из нескольких значений, вы можете поместить значения для сравнения с ($B, $C и $D) в массив и затем использовать in_array(), чтобы увидетьесли исходное значение ($A) соответствует любому из них.

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

Если вы не хотите, чтобы оно совпадало с любым из $B, $C или $D просто используйте !:

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