Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何压缩if语句代码?_Php_If Statement - Fatal编程技术网

Php 如何压缩if语句代码?

Php 如何压缩if语句代码?,php,if-statement,Php,If Statement,因此,我有一个名为bestmatchrule的变量,它返回一个介于1-25之间的数字,现在我尝试使用以下if语句为该数字指定一个名称: $a=$bestmatchrule; $b=''; if ($a == "1" || "2") { $b="Chesil House"; } elseif ($a == "3" || "4") { $b="Corfe House"; } elseif ($a == "5" || "6") { $b="Cranborne Ho

因此,我有一个名为bestmatchrule的变量,它返回一个介于1-25之间的数字,现在我尝试使用以下if语句为该数字指定一个名称:

$a=$bestmatchrule;
$b='';

if ($a == "1" || "2") {
      $b="Chesil House";
} elseif ($a == "3" || "4") {
      $b="Corfe House";
} elseif ($a == "5" || "6") {
      $b="Cranborne House";
} elseif ($a == "7" || "8") {
        $b="Dorchester House";
} elseif ($a == "9" || "10") {
      $b="Lyme Regis House";
} elseif ($a == "11" || "12") {
      $b="Okeford House";
} elseif ($a == "13" || "14") {
      $b="Purbeck House";
} elseif ($a == "15" || "16") {
      $b="Student Village";
} elseif ($a == "17" || "18" || "19") {
      $b="Unilet";
} elseif ($a == "20") {
      $b="Conel Court";
} elseif ($a == "21" || "22") {
      $b="St John's Road";
} elseif ($a == "23" || "24" || "25") {
      $b="Private Let";
} else {
     "Please Try Again";
}
问题是它不起作用。它只返回最上面的一个。这是返回值或if语句的问题吗

还有,有没有办法缩短它使它看起来更漂亮?我更关注功能,但一定有比这更好的方法吗

提前谢谢! (顺便说一句,很抱歉这个问题!)

$a==“1”| |“2”
不是有效的语句。它需要是
$a==“1”| |“$a==2”
。那是你的错误

就缩短这一步而言,你无能为力。您可以使用
in_array()
来缩短一些语句,但实际上您没有任何真正方便的语句

if ($a == "1" || $a == "2") {
      $b="Chesil House";
} elseif ($a == "3" || $a == "4") {
      $b="Corfe House";
} elseif ($a == "5" || $a == "6") {
      $b="Cranborne House";
} elseif ($a == "7" || $a == "8") {
        $b="Dorchester House";
} elseif ($a == "9" || $a == "10") {
      $b="Lyme Regis House";
} elseif ($a == "11" || $a == "12") {
      $b="Okeford House";
} elseif ($a == "13" || $a == "14") {
      $b="Purbeck House";
} elseif ($a == "15" || $a == "16") {
      $b="Student Village";
} elseif (in_array($a, array("17", "18","19")) {
      $b="Unilet";
} elseif ($a == "20") {
      $b="Conel Court";
} elseif ($a == "21" || $a == "22") {
      $b="St John's Road";
} elseif (in_array($a, array("23", "24", "25")) {
      $b="Private Let";
} else {
     echo "Please Try Again";
}
您还可以使用数组保存值,其中
$a
值是键。然后检查它是否在数组中,如果在数组中,则指定值:

$array = [
    1 => "Chesil House",
    2 => "Chesil House",
    3 => "Corfe House",
    4 => "Corfe House",
    5 => "Cranborne House",
    6 => "Cranborne House",
    7 => "Dorchester House",
    8 => "Dorchester House",
    9 => "Lyme Regis House",
    10 => "Lyme Regis House",
    11 => "Okeford House",
    12 => "Okeford House",
    13 => "Purbeck House",
    14 => "Purbeck House",
    15 => "Student Village",
    16 => "Student Village",
    17 => "Unilet",
    18 => "Unilet",
    19 => "Unilet",
    20 => "Conel Court",
    21 => "St John's Road",
    22 => "St John's Road",
    23 => "Private Let",
    24 => "Private Let",
    25 => "Private Let"
];

if (isset($array[$a])) {
    $b = $array[$a];
}
else {
    echo "Please Try Again";
}

约翰·康德的答案可能正是你想要的。另一种可能性是渐进式少于(据猜测,您可能需要更接近的东西:
如果($a==“1”| |$a==“2”)…
至于更好的方法,显然是数组。将其转换为数组可能是esierarray
$x=array(1=>'Chesil House',2=>'Chesil House',3=>'Corfe House')…
$a= (int) $bestmatchrule;
$b='';

if ($a < 3) {
      $b="Chesil House";
} elseif ($a < 5) {
      $b="Corfe House";
} elseif ($a < 7) {
      $b="Cranborne House";
} elseif ($a < 9) {
        $b="Dorchester House";
} elseif ($a < 11) {
      $b="Lyme Regis House";
} elseif ($a < 13) {
      $b="Okeford House";
} elseif ($a < 15) {
      $b="Purbeck House";
} elseif ($a < 17) {
      $b="Student Village";
} elseif ($a < 20) {
      $b="Unilet";
} elseif ($a < 21) {
      $b="Conel Court";
} elseif ($a < 23) {
      $b="St John's Road";
} elseif ($a < 26) {
      $b="Private Let";
} else {
     "Please Try Again";
}