$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
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
所以就没有这些值了
所以就错了
如果不unset的话,我想进行完循环之后,通过$dd = array_merge($one, $one1)把这两个数组合并,那样的话就会有相同$one[$i][2]了!!
有没有别的方法呢??
我不是要他们俩的交集,我是要让这两个数组进行比较,把满足$one[$i][2]==$one1[$j][2]的条件的数组值,把$one1[$j][]中的部分键值赋给$one[$i][],,然后不满足该条件的,也就是说$one1中有,而$one中没有的,我也要保留下来!!
谢谢大家!!!
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);
效果是一样的
加分!!