我只是在学习php而且我无法理解为什么我会从以下两个代码片段中得到不同的结果。
摘录1:
<?php
$x = 22;
$y = 12;
$counter = 0;
function add()
{
if ($GLOBALS['counter'] == 0)
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
else
{
$GLOBALS['z'] += $GLOBALS['y'];
}
$GLOBALS['counter'] ++;
}
add();
echo "$z <br>";
add();
echo "$z <br>";
?>
第一个按预期返回34,46。
摘录2:
<?php
$x = 22;
$y = 12;
$counter = 0;
function add()
{
if ($GLOBALS['counter'] == 0)
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
else
{
$GLOBALS['z'] += $GLOBALS['y'];
}
$GLOBALS['counter'] ++;
}
for ($x=0; $x < 2; $x++)
{
add();
echo "$z <br>";
}
?>
第二个返回12,24。
这可能听起来很简单但我老实说不清楚为什么这不起作用。
感谢任何帮助。
答案 0 :(得分:1)
您正在为循环计数器重用变量名$x
。您已将$x
设置为0
,因此当您执行0 + 12
时,您会获得$_GLOBALS['x'] + $_GLOBALS['y']
。您必须将其重命名为您尚未使用的内容。我建议将其更改为$i
:
for ($i = 0; $i < 2; $i++)
{
add();
echo "$z <br>";
}
我还建议您一般不要使用$_GLOBALS
。
答案 1 :(得分:0)
创建循环时
for ($x=0; $x < 2; $x++)
{
add();
echo "$z <br>";
}
您从之前覆盖x
的定义...将其更改为
for ($q=0; $q < 2; $q++)
{
add();
echo "$z <br>";
}
你会看到......