检查变量是什么的最佳方法

时间:2013-05-06 22:31:45

标签: php

我想知道最快的方法是做以下事情:

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(...))声明,但想知道你的想法。

4 个答案:

答案 0 :(得分: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 == 2read more

时轻松处理案例

答案 1 :(得分:1)

如果您只想知道“$ var”是否在您的集合{1,2,3}中,那么in_array就可以了。

否则,如果你想知道你有哪个(如果有的话)值,那么我会这样做:

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

请注意“else if”,以免您重新检查已知的内容。

另请注意,PHP 4和5也有一个“switch”case / block:

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

答案 2 :(得分:1)

或者使用开关盒,这在很多情况下都可以阅读:

switch($var) {
    case 1: /*1*/ break;
    case 2: /*2*/ break;
    case 3: /*3*/ break;
    default: /*not 1 not 2 not 3*/
}

答案 3 :(得分: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 } 语句的原因,因为它使得它明确选择了什么模式。

{{1}}