首页 新闻 搜索 专区 学院

问一个PHP数组合并的问题

0
[待解决问题]

$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中记录,能否使用数组合并的方式来更新这条记录?

PHP
聪明猴子的主页 聪明猴子 | 菜鸟二级 | 园豆:202
提问于:2021-05-18 07:37
< >
分享
所有回答(2)
0

你可以通过array_merge函数实现你说的功能,只需要arraya数组和arrayb数组中的键名保持一致就可以了,举个例子:
$arraya=array('a'=>'123','b'=>'456');
$arrayb=array('a'='我是新数据');
$res = array_merge($arraya,$arrayb);
这样打印出来a的值就会被替换,不知道是不是你想要的结果

清枫PHP | 园豆:202 (菜鸟二级) | 2021-05-18 17:58
0

你是想合并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;
        }
    }
乖乖0943 | 园豆:202 (菜鸟二级) | 2021-08-06 17:34

支持楼主的方法,在项目中其实也经常这样子用。

支持(0) 反对(0) power0v0 | 园豆:202 (菜鸟二级) | 2021-09-29 10:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册