$num1 = count($one1); 
for ($i=0;$i <count($one);$i++){ 
  for ($j=0;$j <$num1;$j++){ 
        if($one[$i][2]==$one1[$j][2]){ 
    $one[$i][6]=$one1[$j][6]; 
unset($one1[$j]); 
break; 
} } 
} 因为你用unset删除了数组里面的值,所以在执行过程中还会出现一些Notice

解决方案 »

  1.   

    前面比较过程当中,你把one1一些值unset了
    所以就没有这些值了
    所以就错了
      

  2.   

    那请高手们帮我想个办法!!
    如果不unset的话,我想进行完循环之后,通过$dd = array_merge($one, $one1)把这两个数组合并,那样的话就会有相同$one[$i][2]了!!
    有没有别的方法呢??
      

  3.   

    array_intersect函数得出$one[$i][2]等于$one1[$j][2]的交集
      

  4.   

    可能是我没有描述清楚!!
    我不是要他们俩的交集,我是要让这两个数组进行比较,把满足$one[$i][2]==$one1[$j][2]的条件的数组值,把$one1[$j][]中的部分键值赋给$one[$i][],,然后不满足该条件的,也就是说$one1中有,而$one中没有的,我也要保留下来!!
    谢谢大家!!!
      

  5.   

    这样写
    for ($i=0;$i <count($one);$i++){ 
      foreach($one1 as $j=>$v){ 
        if($one[$i][2] == $v[2]){ 
          $one[$i][6] = $v[6]; 
          unset($one1[$j]); 
          break; 
        } 
      } 
    } 当数组元素被删去后,count()就变了,但下标并不改变按照你原来的写法,需要在break前加一句:$one1 = array_slice($one1, 0);
    效果是一样的
      

  6.   

    非常感谢大家!! 特别是xuzuning,你的方法完全能达到我要求,谢谢!!
    加分!!