无限加载问题PHP


Infinite loading issue PHP

代码:

<?
$C1=array("a"=>1,"b"=>2);
$C2=array("z"=>1,"s"=>2);
$C3=array("x"=>1,"h"=>2);
$C4=array("a"=>1,"c"=>2);
$keywords=array("x","z","h");
for($i=2;$i<4;$i++)
{
    $i="C".$i;
    $array=$$i;
    foreach($keywords as $val)
    {
        if(isset($array[$val]))
        {
            echo $i." -> $val<br>";
        }
    }
}
?>

应该显示:

C2 -> z
C3 -> x
C3 -> h

如果我写$i=2而不是for()循环,它会写C2 -> z,因为它应该。

但是我必须使用for()循环产生无限加载。

为什么?问题在哪里?

在循环中,您正在用字符串重新分配$i变量。之后它就不能通过循环边界检查了。相反,使用另一个变量:

<?
$C1=array("a"=>1,"b"=>2);
$C2=array("z"=>1,"s"=>2);
$C3=array("x"=>1,"h"=>2);
$C4=array("a"=>1,"c"=>2);
$keywords=array("x","z","h");
for($i=2;$i<=4;$i++)
{
    $a="C".$i;
    $array=$$a;
    foreach($keywords as $val)
    {
        if(isset($array[$val]))
        {
            echo $a." -> $val<br>";
        }
    }
}
?>

此外,值得注意的是,在比较$i<4时,循环只运行两次(对于$i = 2和3)。所以在我的代码中,我把这个改成了$i<=4来修复这个

起初$i是一个数字,然后$i++按预期递增然后你把$i改成"C" $i

so $i="C2"现在我猜++运算符应用于C2值永远不会使它>4