<?php
for ($i=1;$i<2;$i++)
{
for ($j=1;$j<2;$j++)
{
$a=5;
}
$b=$a;
echo $a;
}
echo $a;
echo $b;
echo $i;?>
输出竟然是552,太坑了,能不能解释下为什么这么设计,和C/C++差别太大了,这样岂不是很容易引起变量冲突?
for ($i=1;$i<2;$i++)
{
for ($j=1;$j<2;$j++)
{
$a=5;
}
$b=$a;
echo $a;
}
echo $a;
echo $b;
echo $i;?>
输出竟然是552,太坑了,能不能解释下为什么这么设计,和C/C++差别太大了,这样岂不是很容易引起变量冲突?
for ($i=1;$i<2;$i++) //这个循环只会执行一次
{
for ($j=1;$j<2;$j++) //这个循环也只执行一次
{
$a=5;
}
$b=$a;
echo $a;
}
echo $a; //$a 的值是循环中的最后的最后一次赋值($a=5)
echo $b; //$b 的值是循环中的最后的最后一次赋值($b=$a)
echo $i; //循环中止时的 $i 的值有什么不对吗?
如果你说 和C/C++差别太大了 那么你的 C/C++ 同样没有学好!
{
for ($j=1;$j<2;$j++)
{
$a=5; // $a 赋值为5
}
$b=$a; // $b 赋值为5
echo $a; // 输出$a的值5
}
echo $a; // 输出$a的值5
echo $b; // 输出$b的值5
echo $i; // 输出$i的值,因为for($i=1; $i<2; $i++),所以$i只执行了一次$i++,所以$i=2最后输出5 5 5 2,没什么不对。如果是C程序,也是一样的结果。#include <stdio.h>
#include <stdlib.h>int main(){ int a,b,i,j; for(i=1; i<2; i++){
for(j=1; j<2; j++){
a = 5;
}
b = a;
printf("%d\n", b);
} printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", i);}