Я хотел бы перейти от этого:
if($var == 3 || $var == 4 || $var == 5 || $var =='string' || $var == '2010-05-16') { execute code here }
к этому:
if($var == (3, 4, 5, 'string', '2010-05-16')) {execute code here }
Кажется очень избыточным, чтобы набирать $ var, и я нахожу, что это делает его немного громоздким для чтения. Есть ли способ в PHP упростить его таким образом? Я прочитал здесь сообщение о том, что при использовании XQuery вы можете использовать оператор =, как в $ var = (1,2,3,4,5) и т. Д.
Спасибо, Джон
Поместите значения в массив, затем используйте функцию in_array (), чтобы проверить, существуют ли они.
$checkVars = array(3, 4, 5, "string", "2010-05-16"); if(in_array($var, $checkVars)){ // Value is found. }
Если вам нужно выполнить эту проверку очень часто, и вам нужна хорошая производительность, не используйте медленный поиск массива, но вместо этого используйте быстрый поиск хеш-таблицы:
$vals = array( 1 => 1, 2 => 1, 'Hi' => 1, ); if (isset($vals[$val])) { // go! }
if (in_array($var, array(3, 4, 5, 'string', '2010-05-16'))) {execute code here }
Или, альтернативно, блок переключателя:
switch ($var) { case 3: case 4: case 5: case 'string': case '2010-05-16': execute code here; break; }
Вы можете использовать in_array()
.
if (in_array($var, array(3,4,5,"string","2010-05-16"))) { .... }
Или вы можете использовать in_array()
if(in_array($var,array(4,5,'string','2010-05-16',true)) { }
Просто чтобы дать альтернативное решение для использования in_array
:
В некоторых случаях может быть быстрее установить массив, где значения являются ключами, а затем проверить с помощью isset()
Пример:
$checkVars= [3 => true, 4 => true, 5 => true, "string" => true, "2010-05-16" => true]; if(isset($checkVars[$var]) { // code here }
EDIT : Я провел некоторое тестирование, и похоже, что в большинстве случаев этот метод быстрее.
$vals = array (3, 4, 5, 'string', '2010-05-16'); if(in_array($var, $vals)) { //execute code here }
У меня была эта проблема, и я решил эту функцию:
function orEquals(){ $args = func_get_args(); foreach($args as $arg){ if ($arg != $args[0]){ if($arg == $args[0]){ return true; break; } } } unset($args); }
этаfunction orEquals(){ $args = func_get_args(); foreach($args as $arg){ if ($arg != $args[0]){ if($arg == $args[0]){ return true; break; } } } unset($args); }
неfunction orEquals(){ $args = func_get_args(); foreach($args as $arg){ if ($arg != $args[0]){ if($arg == $args[0]){ return true; break; } } } unset($args); }
то вы можете просто вызвать функцию следующим образом:
if(orEquals($var, 3, 4, 5, 'string', '2010-05-16')){ //your code here }