Ответ 1
Поместите значения в массив, затем используйте функцию in_array(), чтобы проверить, существуют ли они.
$checkVars = array(3, 4, 5, "string", "2010-05-16");
if(in_array($var, $checkVars)){
// Value is found.
}
Я хотел бы перейти от этого:
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);
}
то вы можете просто вызвать функцию следующим образом:
if(orEquals($var, 3, 4, 5, 'string', '2010-05-16')){
//your code here
}