2013-05-06 3 views
0

мне было интересно, что самый быстрый способ будет сделать что-то вроде следующего:Лучший способ проверить, что переменная

if ($var == 1) { 
// 1 
} 
if ($var == 2) { 
// 2 
} 
if ($var == 3) { 
// 3 
} 

и т.д., но в конце концов иметь что-то вроде:

if ($var != 1 or 2 or 3) { 
//Not a number 
} 

Я думал о том, чтобы в конце было заявление if(in_array(...)), но хотел узнать ваши мысли.

+0

как используется '$ var' в этих случаях? может ли он быть использован прямо? –

ответ

0

Используйте if/else if/else, с помощью которого вы можете решить, подходят ли строгие или свободные сравнения.

С switch, это всегда свободные сравнения, поэтому я предпочитаю if заявление, так как это делает его явным, какой режим был выбран.

if ($var === 1) { 
// 1 
} 
else if ($var === 2) { 
// 2 
} 
else if ($var === 3) { 
// 3 
} 
else { 
//neither 1, 2 nor 3 
} 
6

Я хотел бы сделать это с switch

switch ($var) { 
    case 0: 
     echo "var equals 0"; 
     break; 
    case 1: 
     echo "var equals 1"; 
     break; 
    case 2: 
     echo "var equals 2"; 
     break; 
    default: 
     echo "var is not 0 1 or 2" 
} 

Кроме того, если вы пропустите в break заявление, то вы можете легко сделать случай, когда $var == 1 || $var == 2, read more

1

Если все, что вы хотите знать есть ли «$ var» в вашем наборе {1, 2, 3}, тогда in_array в порядке.

В противном случае, если вы хотите знать, который (если таковые имеются) значение, которое вы получили, то я бы это сделать:

if ($var == 1) { 
// 1 
} 
else if ($var == 2) { 
// 2 
} 
else if ($var == 3) { 
// 3 
} 
else { 
} 

Обратите внимание на «еще, если», чтобы спасти вас от повторного проверяя, что вы уже знаете.

Заметим также, что PHP 4 и 5 также есть "переключатель" корпус/блок:

switch ($i) { 
    case 1: 
     // 1 
     break; 
    case 2: 
     // 2 
     break; 
    case 3: 
     // 3 
     break; 
    default: 
     ... 
} 
+0

Спасибо вам большое! – totallyuneekname

1

Или используйте кожух переключателя, это лучше читать гораздо случаях:

switch($var) { 
    case 1: /*1*/ break; 
    case 2: /*2*/ break; 
    case 3: /*3*/ break; 
    default: /*not 1 not 2 not 3*/ 
} 
Смежные вопросы