$arraya = array(
array("title"=>"标题标题标题标题","url"=>"http://www.163.com"),
array("title"=>"标题标题标题标题","url"=>"http://www.sina.com"),
array("title"=>"标题标题标题标题","url"=>"http://www.sohu.com")
);
$arrayb = array(
array("index"=>1,"title"=>"标题标题标题标题","url"=>"http://www.baidu.com")
);
foreach($arraya as $key => $value){
foreach($arrayb as $key2 => $value2){
if($value2['index'] == $key){
$arraya [$key]['title'] = $value['title'];
$arraya [$key]['url'] = $value2['url'];
}
}
}
我是使用的foreach来把$arraya中的第2条记录更新为$arrayb中记录,能否使用数组合并的方式来更新这条记录?
你可以通过array_merge函数实现你说的功能,只需要arraya数组和arrayb数组中的键名保持一致就可以了,举个例子:
$arraya=array('a'=>'123','b'=>'456');
$arrayb=array('a'='我是新数据');
$res = array_merge($arraya,$arrayb);
这样打印出来a的值就会被替换,不知道是不是你想要的结果
你是想合并AB数组进行去重?还是只是想将B数组中的数据在A中做替换?
如果只是做替换,可以这么写,一层循环就可以了:
// 用$arraya数组的key组成新的数组,记为key数组
$arrayKeys = array_keys($arraya);
foreach ($arrayb as $val) {
// 判断$arrayb的index是否在key数组中,在则进行替换即可
$index = $val['index'];
if(in_array($index,$arrayKeys)){
unset($val['index']);
$arraya[$index] = $val;
}
}
支持楼主的方法,在项目中其实也经常这样子用。