我想根据课程数量设置$levelNumber
。所以我做了以下事情:
<?php
$s = "Lesson 001: Vocabulary";
preg_match("/([0-9]+)/", $s, $matches);
echo $matches[1]; // => 001
if ($matches[1] >= 060) {
$levelNumber = "2";
} elseif ($matches[1] >= 120) {
$levelNumber = "3";
} elseif ($matches[1] >= 180) {
$levelNumber = "4";
} elseif ($matches[1] >= 240) {
$levelNumber = "5";
} elseif ($matches[1] >= 300) {
$levelNumber = "6";
} elseif ($matches[1] >= 360) {
$levelNumber = "7";
} else {
$levelNumber = "1";
}
?>
但是现在无论课程有多大(例如180
)$levelNumber
总是输出2
。当课程在1
下时,它会输出048
。我真的很困惑。
这是课程的正确级别:
第1级:第1至第60课
第2级:第61至120课
第3级:第121至180课
4级:第181至240课
第5级:第241至300课
等级6:经验教训301至360
等级7:经验教训361至420
答案 0 :(得分:1)
考虑你的陈述中的逻辑流程。
当遇到行if ($matches[1] >= 060)
并且$matches[1]
的值为180时,条件为true
,因此代码块将执行。因此,$levelNumber
被赋值为“2”。
因为您对其余条件使用elseif
,所以从不评估它们(第一个条件已经满足)。
最简单的解决方案可能是更改if
语句的顺序,以便首先检查更大的值。
答案 1 :(得分:1)
你的部分问题是060是八进制表示。这解释了48问题。 http://php.net/manual/en/language.types.integer.php
并且,正如其他人所指出的那样,你不能在你的if语句中使用一堆&gt; =。