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>";
}
}
}
?>