$a1 =array("1"=>"a","2"=>"b","3"=>"c");
$array_a = array();
array_push($array_a, $a1);
foreach($array_a as $v){
  $v['4'][1] = $a1;
  print(count($v['4']))."<br>";
}
foreach($array_a as $v){
 print(count($v['4']));
}

解决方案 »

  1.   

    我是想问为什么第一个循环里面添加的数组元素出了循环就实效了?所以导致第二个count输出的是0? 该怎么改?
      

  2.   

    $a1 =array("1"=>"a","2"=>"b","3"=>"c");
    $array_a = array();
    array_push($array_a, $a1);
    foreach($array_a as $v){  //在这里根本没有改变过$array_a
      $v['4'][1] = $a1;   
      print(count($v['4']));  //可以在这里print_r($v) ,分析一下
    }
    foreach($array_a as $v){
     print(count($v['4']));
    }可以增加一个数组$a1 =array("1"=>"a","2"=>"b","3"=>"c");
    $array_a = array();
    array_push($array_a, $a1);$array_temp = array() ;   //增加一个数组foreach($array_a as $v){
      $v['4'][1] = $a1;
      print(count($v['4']));
      $array_temp[] = $v ; 
    }print_r($array_temp) ; 
      

  3.   

    手册上面有这么一段:
    注意: 
    除非数组是被引用,foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。因此数组指针不会被 each() 结构改变,对返回的数组单元的修改也不会影响原数组。不过原数组的内部指针的确在处理数组的过程中向前移动了。假定 foreach 循环运行到结束,原数组的内部指针将指向数组的结尾。