php初学者,我可以为多个循环分配相同的变量吗
案例1循环在另一个循环中,我是否可以为递增分配php初学者,我可以为多个循环分配相同的变量吗,php,Php,案例1循环在另一个循环中,我是否可以为递增分配$I变量 for($i=0; $i < 10; $i++) { for($i=0; $i < 5; $i++) { echo "You are too cute"; } } 案例1:不,你不能。您需要为每个循环分别创建变量 for($i=0; $i < 10; $i++) { for($j=0; $j < 5; $j++) { echo "You are too cute"; }
$I
变量
for($i=0; $i < 10; $i++)
{
for($i=0; $i < 5; $i++)
{
echo "You are too cute";
}
}
案例1:不,你不能。您需要为每个循环分别创建变量
for($i=0; $i < 10; $i++)
{
for($j=0; $j < 5; $j++)
{
echo "You are too cute";
}
}
($i=0;$i<10;$i++)的
{
对于($j=0;$j<5;$j++)
{
“你太可爱了”;
}
}
案例2:是的,你可以
for($i=0; $i < 10; $i++)
{
echo "You are too cute";
}
for($i=0; $i < 5; $i++)
{
echo "You are too cute";
}
($i=0;$i<10;$i++)的
{
“你太可爱了”;
}
对于($i=0;$i<5;$i++)
{
“你太可爱了”;
}
案例1:如果你得到一个非常奇怪的结果,请检查一下
如何做好这件事?看看这个
($i=0;$i<10;$i++)的{
对于($k=0;$k<5;$k++){
回声“1”.$i.“2”.$k.“\n”;
}
回音“\n”;
}
案例2:如上述评论和其他答案所述,工程罚款但是,我也可以在这个例子中添加这一点
for($i=0; $i < 10; $i++){
echo $i."\n";
}
echo "\n Outside the loop: ".$i." \n";
for($i=0; $i < 5; $i++){
echo $i."\n";
}
($i=0;$i<10;$i++)的{
回显$i.“\n”;
}
回显“\n在循环外部:“.$i.”\n”;
对于($i=0;$i<5;$i++){
回显$i.“\n”;
}
循环发生后,仍然可以访问$i
。之所以可以再次使用$i
,是因为您正在声明它$i=0代码>再次,对当前正在运行的另一个循环不感兴趣(如案例1所示)
您可以测试这个示例已经有一些很好的答案,但是这里有一个稍微不同的视角
这取决于你所说的“能”是什么意思。您可以这样做,因为它是语法正确的PHP代码
for($i=0; $i < 10; $i++)
{
for($i=0; $i < 5; $i++)
{
echo "You will never see this text in your browser.";
}
}
($i=0;$i<10;$i++)的
{
对于($i=0;$i<5;$i++)
{
echo“您永远不会在浏览器中看到此文本。”;
}
}
但由于循环不会在PHP中引入新的变量范围,因此它会创建一个无限循环
外循环将执行一次,然后内循环将$i
重置为0
,将其递增为5
,将控制权返回到外循环,外循环将执行一次,立即导致内循环再次启动,将$i
重置为0
并将其递增为5
,以此类推(至少在脚本超时之前)。外循环永远不会结束,因为内循环影响$i
,因此它永远不会满足外循环的退出条件
换言之,只需为内部循环使用不同的变量即可。删除一个整数变量并不是对代码的明显优化,如果这是您所关心的
在第二个示例中,没有理由不重用$i
案例1:
简短的回答不,你不能。
答案很长。
首先,您需要了解变量实际上是什么,以及循环实际上是如何工作的。
每个变量实际上都是对内存的引用。在您的示例中,您创建了一个名为$i的变量,在将值递增1后,它不能大于或等于10。
在机器级别,它被转换为内存中的一个地址。例如,$i指向一个随机地址0xF25,当你循环它并递增它时,下一个地址变成0xF30
当您编写for循环时,编译器会自动分配一个固定的内存地址,并且该地址仅限于您的变量范围
编译器所做的是,它为该标记($i)创建一个表
$i(这是令牌)->0xF25(这是值)
当您执行$i时,此值将更新++
在嵌套循环中,编译器分配相同的表(尽管外循环不能访问内循环变量)。如果编译器为内循环放置相同的变量,这将是矛盾的。因为内循环可能从内存地址0xE21开始。在这种情况下,当外循环增量值为1时,它将是0xE22,但如上所述,它需要是0xF30。
这就是为什么编译器不允许这样做的原因,我们需要使用案例2示例。如果它们没有嵌套,您可以这样做。如果您对嵌套执行此操作,您将得到一些令人讨厌的副作用,因为两个循环都使用相同的变量。请使用不同的变量。案例1:否,案例2:是。循环构造不会影响PHP中的变量范围,也就是说,它不是相同的$i
。案例一不起作用,因为您将覆盖$i
的外部循环值。最好对外部循环和内部循环使用不同的变量。您知道,您可以很容易地测试这一点,并回答您自己的问题。我很好奇,为什么您不直接编写此代码并测试它?
for($i=0; $i < 10; $i++){
echo $i."\n";
}
echo "\n Outside the loop: ".$i." \n";
for($i=0; $i < 5; $i++){
echo $i."\n";
}
for($i=0; $i < 10; $i++)
{
for($i=0; $i < 5; $i++)
{
echo "You will never see this text in your browser.";
}
}