PHP - 循环语句语法不正确,因此永远不会执行

时间:2015-08-22 14:18:30

标签: php

我正在编写一个PHP脚本,我想检查一个数字是否在20< x < 40这两个其他数字之间,但是在更高的范围内,如下所示:

0,400,500,600,800,1000,1200,1400,1600,1800,2000,2200,2400,2600,2800,3000,3200,3500,3800,4100,4400,4700,5000

我想检查它是否在0到400之间,然后如果它们在它们之间回声,如果它不检查它是否在400到500之间并且......我的程序是这样的:

$lt=array(0,400,500,600,800,1000,1200,1400,1600,1800,2000,2200,2400,2600,2800,3000,3200,3500,3800,4100,4400,4700,5000);
$lt2=array(399,499,599,799,999,1199,1399,1599,1799,1999,2199,2399,2599,2799,2999,3199,3499,3799,4099,4399,4699,4999,99999);
$value = 5000
$legend = count($lt2);
for ($x = 0; $x == $legend+1; $x++);
{
    if (($value >= $lt[$x]) and ($value < $lt2[$x]))
    {
        $y=$x-1;
        echo "True!";
    }
} 

我的问题是它永远不会进入IF声明。虽然我的if语句是正确的,但我的号码在两个数字之间,但它没有回应任何东西。

2 个答案:

答案 0 :(得分:1)

您的代码有点不对,但我已经为您解决了这个问题:

您的错误:

$value = 5000

缺少分号

for ($x = 0; $x == $legend+1; $x++);需要更改为: for ($x = 0; $x < ($legend - 1); $x++)请注意,for循环中有分号,条件错误。

此外,$y = $x - 1需要重写为:$y = $x;

$lt=array(0,400,500,600,800,1000,1200,1400,1600,1800,2000,2200,2400,2600,2800,3000,3200,3500,3800,4100,4400,4700,5000);
$lt2=array(399,499,599,799,999,1199,1399,1599,1799,1999,2199,2399,2599,2799,2999,3199,3499,3799,4099,4399,4699,4999,99999);
$value = 5000;

$legend = count($lt2);

for ($x = 0; $x < $legend; $x++)
{
    if (($value >= $lt[$x]) && ($value < $lt2[$x]))
    {
        $y = $x;
        echo "True!";
    }
}

echo $lt[$y];
?>

答案 1 :(得分:0)

此行中缺少分号:

$value = 5000

此外,无法达到$x == $legend + 1语句中的条件for$legend + 1$lt2的长度增加1.长度为0或更高,因此$x永远不会是$legend + 1,因为它被定义为$x = 0

您可能需要$x <= $legend + 1(也许您必须遗漏+ 1)。