Php for循环和while循环中的变量范围
我是PHP新手,我不明白为什么下面代码的最终结果是'233'而不是'231',foreach中的$a不是一个临时变量吗Php for循环和while循环中的变量范围,php,python,for-loop,while-loop,Php,Python,For Loop,While Loop,我是PHP新手,我不明白为什么下面代码的最终结果是'233'而不是'231',foreach中的$a不是一个临时变量吗 <?php $a = '1'; $c = array('2', '3'); foreach($c as $a){ echo $a ; } echo $a; ?> foreach循环中的$a覆盖循环外的$a。您在foreach循环中使用了相同的变量名称。您的foreach的工作方式如下: 在第一次迭代中:赋值2
<?php
$a = '1';
$c = array('2', '3');
foreach($c as $a){
echo $a ;
}
echo $a;
?>
foreach
循环中的$a
覆盖循环外的$a
。您在foreach
循环中使用了相同的变量名称。您的foreach的工作方式如下:
$c[0]
的值被赋值给$a
$c[1]
的值被赋值给$a
$a
的值变为3,如果为1这就是为什么结果是233。不是231。第1行的
$a
和foreach()
循环中的$a
是一个相同的对象。循环结束后,$a
具有值3
,该值在上一条语句中是echo
ed。根据php.net: 大多数情况下,所有PHP变量都只有一个作用域 只有在函数中,变量范围才不同。
这将产生您想要的结果“231”:
$a = '1';
$c = array('2', '3');
function iterate($temp)
{
foreach($temp as $a)
echo $a ;
}
iterate($c)
echo $a;
因为在iterate()
函数中,$a
独立于调用代码的$a
。更多信息:因为您在while循环中重新声明了$a。。使其成为数组的最后一个值。@Naruto所以你的意思是$a的行为不像一个临时变量?@Naruto没有理解。(\ux)。谢谢。如果在最后一部分更改$b='1'并回显$b,则得到231。
$a = '1';
$c = array('2', '3');
function iterate($temp)
{
foreach($temp as $a)
echo $a ;
}
iterate($c)
echo $a;