检查变量的值是否在特定的值范围内

时间:2010-11-14 18:29:59

标签: php

首先,我想说我不是程序员,但我今天一直在玩一些简单的PHP脚本,而且对于那些知道的人我有一个快速的问题。我如何简化以下代码,以便它不使用所有这些OR逻辑运算符?

$number = "";

if ("$number" == 2 || "$number" == 3 || "$number" == 8 || "$number" == 10) 
{  
    echo ('Your number is ' . "$number");
} 

谢谢, 克里斯

4 个答案:

答案 0 :(得分:7)

<?php
if (in_array($number,array(2,3,8,10))) {
     echo 'Your number is '.$number;
}

<?php
switch ($number) {
case 2:
case 3:
case 8:
case 10:
    echo 'Your number is '.$number;
    break;
case 99;
    echo 'Your number is 99';
    break;
}

答案 1 :(得分:2)

首先,虽然你的变量引用不会导致代码中断,但你真的不需要它们,事实上你的代码仍然有效的唯一原因是PHP有一个奇怪的系统来匹配字符串和整数

无论如何,重写该代码的一种方法是

$validNumbers = array(2,3,8,10);

if (in_array($number, $validNumbers))
{
    echo ('Your number is '. $number);
}

从技术上讲,你也可以这样做

if ((1 << $number) & 1292)

如果你进入了不可读的代码。这是有效的,因为1292的二进制表示具有1,正好位于二进制数字2,3,8和10。

答案 2 :(得分:1)

你不能以一种有意义的方式使它更简单。我会保持这样。

编辑:通过“简化”,我猜你想做更少的操作...

答案 3 :(得分:-3)

你可以这样做:

$valid_numbers = array(2, 3, 8, 10);
if (in_array($number, $valid_numbers)) {
  echo 'Your number is ', $number;
}

p.s。:你不需要/将错误的数字放在引号之间是错误的,因为你期待一个int。

希望这会有所帮助