PHP可变范围奇怪的麻烦

时间:2015-07-28 15:15:34

标签: php scope

当我突然与变量范围混淆时,我正在编写PHP。

如果我像这样循环......

function foo()
{

    $ctr = 0;

    for ($i = 0 ; $i > 8 ; $i++)
    {

        $ctr = $ctr + 1;

    }

    return $ctr;

}

$ ctr返回0。

但如果我像这样做循环......

function foo()
{
    $collections = //This has 7 counts;        

    $ctr = 0;

    foreach ($collections as $collection)
    {
         $ctr = $ctr + 1;
    }

    return $ctr;

}

CTR是退货7!

那么第一个循环中的问题是什么?

3 个答案:

答案 0 :(得分:1)

你试图做的for循环似乎有点不对。

    for ($i = 0 ; $i > 8 ; $i++)
                  ^^^^^^

表示,将$ i设置为0.只要$ i大于8,执行此循环然后递增。

由于$ i设置为0,因此永远不会满足条件,因此永远不会执行循环。

更改$ i> 8到$ i< 8。

答案 1 :(得分:0)

您的循环条件:

for ($i = 0 ; $i > 8 ; $i++)
              ^^^^^^

由于循环从0开始,你有0 > 8,这是假的,你的循环立即终止。请记住,当第二个参数变为false时,循环终止。它必须为TRUE才能执行循环体。

答案 2 :(得分:0)

我必须说,第一个循环中的问题可能很难发现。

关于$ i> 8,你的代码甚至不进入循环。反转运算符,($ i = 0; $ i< 8; $ i ++)

这对我有用。