Вы можете использовать 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])){
//....
}