$a=array('a','b','c');
foreach ($a as $a) {
echo $a[0].'<br />';
}
如果改成以下输出方式也能正常输出,为什么$a一定要as一个新变量给$b了来用$b[]输出呢?为什么不像下面这样直接$a as $a了之后输出?
$a=array('a','b','c');
foreach ($a as $b) {
echo $b[0].'<br />';
}

解决方案 »

  1.   

    我只能说您的两种方法都不能正确
    $a=array('a','b','c'); 
    第一次循环$a as $a
    相当于$a = $a[0];
    echo $a[0]能输出什么呢???第二种方法
    $a=array('a','b','c'); 
    第一次循环$a as $b相当于$b = $a[0];即$b=='a';
    $b[0]==????
      

  2.   

    $a=array('a','b','c'); 
    foreach ($a as $b) { 
    echo $b.' <br />'; 

    这才是正确的写法,看来最近有很多人在学php,csdn上出现了一大批的很奇怪的php问题
      

  3.   

    我来顶楼主,我知道答案了,哈哈在php中,把字符串看做数组,比如:$str = "abc"; (等价于 $str = array('a','b','c')) 其中$str[0]='a'同样这里 $a=array('a','b','c'); 可以把每个元素看做一个只包含一个元素的数组,于是这里的$a 等价于一个二维数组$a = array(array('a'),array('b'),array('c'));所以
    foreach ($a as $a) { 
    echo $a[0].' <br />'; 
    } 是正确的。。这里用$a用$b都是一样的,用$c也可以但这只对以数字为下标的数组有用,如果下标不为数字,比如$a = array('a','b','c','k'=>'d');结论就不成立了
      

  4.   

    sorry,刚才太激动鸟。。上面这句$a = array('a','b','c','k'=>'d')也是成立的只有当值是字符类型(说白了就是用''),且每个元素的长度只是1楼主的结论才是正确的,比如 $a = array('a','b','d'=>1);是无法输出1的同样,如果$a = array('ba','ca','da');输出的结果只是第一个字符。。完毕~
      

  5.   

    foreach($数组变量 as $变量){
       echo $变量;/*“$变量”保存的是本次循环中的当前数组单元值。此时数组内部指针会指向下一个数组单元,下次循环中指
                    针指向的数组单元值再次赋给“$变量”,依次类推直到数组末尾。若当前值是个数组,再用“$变量[索引]”去
                    访问你想要的值。*/
    }