Php 无限加载问题

Php 无限加载问题,php,for-loop,foreach,Php,For Loop,Foreach,代码如下: <? $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

代码如下:

<?
$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>";
        }
    }
}
?>
如果我写
$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等于2和3),因为您正在比较
$i,首先$i是一个数字,然后是预期的$i++增量
然后你把$i改成“C”。$i

因此,$i=“C2”
现在,我猜应用于C2值的++运算符永远不会使其大于4

您正在中断循环变量(
$i=“C”..$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>";
        }
    }
}
?>