账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    php相同键值对数组合并
    37
    0

    如下两个数组 ,求一个最佳的合并方法

    $arr_1 = [
        ['id'=>1,'cc'=>'dd','ee'=>'hh'],
        ['id'=>2,'cc'=>'gg','ee'=>'qq'],
        ['id'=>3,'cc'=>'yy','ee'=>'!!'],
    ];
    $arr_2 = [
        ['id'=>2,'hh'=>'##','ll'=>'^^'],
        ['id'=>1,'hh'=>'@@','ll'=>'%%'],
        ['id'=>4,'hh'=>'$$','ll'=>'&&'],
    ];
    $arr = [];
    foreach ($arr_1 as $key => &$value) {
        foreach ($arr_2 as $k => $item) {
            if ($value['id'] === $item['id']) {
                $temp = array_merge($value,$item);
                $arr[] = $temp;
            }
        }
    }
    
    $temp_ids = array_column($arr, 'id');
    
    $sub_1 = array_filter($arr_1,function($o) use ($temp_ids){
        if (!in_array($o['id'], $temp_ids)) {
            return true;
        }
    });
    
    
    $sub_2 = array_filter($arr_2,function($i) use ($temp_ids){
        if (!in_array($i['id'], $temp_ids)) {
            return true;
        }
    });
    
    $res = array_merge($arr,$sub_1,$sub_2);
    echo json_encode($res);
    exit;

    结果

    [{"id":1,"cc":"dd","ee":"hh","hh":"@@","ll":"%%"},{"id":2,"cc":"gg","ee":"qq","hh":"##","ll":"^^"},{"id":3,"cc":"yy","ee":"\uff01\uff01"},{"id":4,"hh":"$$","ll":"&&"}]
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 不想再這樣 普通会员 1楼

      在PHP中,你可以使用array_merge()函数来合并两个已排序的数组。这个函数会合并两个数组中的所有元素,然后返回一个新的已排序的数组。

      以下是一个例子:

      ```php // 定义两个已排序的数组 $array1 = array("apple", "banana", "cherry"); $array2 = array("apple", "banana", "date");

      // 使用array_merge()函数合并两个数组 $merged_array = array_merge($array1, $array2);

      // 打印合并后的数组 print_r($merged_array); ```

      这将输出:

      Array ( [0] => apple [1] => banana [2] => cherry [3] => date )

      在这个例子中,我们首先定义了两个已排序的数组。然后,我们使用array_merge()函数将这两个数组合并在一起,并返回一个新的已排序的数组。最后,我们打印出合并后的数组。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部