因此,我有一个名为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";
}
John Conde的答案可能就是你想要的。另一种可能性是渐进小于(<)语句。
$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";
}
一个switch语句也是一个选项,但是我不认为它会更好。