PHP,与普通按键合并阵列 [英] PHP, Merging arrays with common keys

查看:267
本文介绍了PHP,与普通按键合并阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要得到两个数组合并成一个,同时保持所有的键代替和在本实施例中的阵列列出的值如下:

  $ ARRAY1 =阵列('车'=>'3','公交车'=>'2');
$数组2 =阵列('狗'=>'1','汽车'=>'2','鸟'=>'9');$合并=阵列(
    '车'=>阵列('3','2'),
    总线=>阵列('2',空)
    '狗'=>阵列(空,'1'),
    鸟= GT; (NULL,'9')
);


解决方案

 函数merge_common_keys(){
    $ ARR = func_get_args();
    $ NUM = func_num_args();    $键=阵列();
    $ I = 0;
    为($ I = 0; $ I< $ NUM ++ $ I){
        $键= array_merge($键,array_keys($改编[$ i]));
    }
    $键= array_unique($键);    $合并=阵列();    的foreach($键为$键){
        $合并[$关键] =阵列();
        为($ I = 0; $ I< $ NUM ++ $ I){
            $合并[$关键] [] =使用isset($改编[$ i] [$关键])? $常用3 [$ i] [$关键]:空;
        }
    }
    返回$合并;
}

用法:

  $ =合并merge_common_keys($数组1,$数组2);

PS。它可以与两个以上的阵列工作,只是通过只要你想下一个参数为多。

I need to get two arrays to merge into one while keeping all the keys in place and listing the values in an array like in this example:

$array1 = array('car' => '3', 'bus' => '2');
$array2 = array('dog' => '1', 'car' => '2', 'bird' => '9');  

$merged = array(
    'car' => array('3','2'), 
    'bus' => array('2',null),
    'dog' => array(null,'1'),
    'bird' => (null,'9')
);

解决方案

function merge_common_keys(){
    $arr = func_get_args();
    $num = func_num_args();

    $keys = array();
    $i = 0;
    for ($i=0; $i<$num; ++$i){
        $keys = array_merge($keys, array_keys($arr[$i]));
    }
    $keys = array_unique($keys);

    $merged = array();

    foreach ($keys as $key){
        $merged[$key] = array();
        for($i=0; $i<$num; ++$i){
            $merged[$key][] = isset($arr[$i][$key]) ? $arr[$i][$key] : null;
        }
    }
    return $merged;
}

Usage:

$merged = merge_common_keys($array1,$array2);

PS. It can work with more than two arrays, just pass as many as you want as next arguments.

这篇关于PHP,与普通按键合并阵列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆