是否有一个PHP函数来组合基于键的2个数组的结果?

时间:2010-05-19 20:55:02

标签: php arrays merge

如果我有以下数组

arry1 = array(
    101 => array(
        'title1' => 'data', 
        'title2' => 'data', 
        'title3' => 'data'
    ),
    102 => array(
        'title1' => 'data', 
        'title2' => 'data', 
        'title3' => 'data'
    ),
    .
    .
    .
);

arry2 = array(
    101 => array(
        'title4' => 'data', 
        'title5' => 'data', 
        'title6' => 'data'
    ),
    102 => array(
        'title4' => 'data', 
        'title5' => 'data', 
        'title6' => 'data'
    ),
    .
    .
    .
);

我希望将它们改成

arry3 = array(
    101 => array(
        'title1' => 'data', 
        'title2' => 'data', 
        'title3' => 'data',
        'title4' => 'data', 
        'title5' => 'data', 
        'title6' => 'data'
    ),
    102 => array(
        'title1' => 'data', 
        'title2' => 'data', 
        'title3' => 'data',
        'title4' => 'data', 
        'title5' => 'data', 
        'title6' => 'data'
    ),
    .
    .
    .
);

php arrays是否有一个简单的功能来执行此操作?如果没有,您认为最有效的方法是什么?

感谢您的帮助,
大都市

EDITED
对不起,我将数组更新为实际应该的样式.... array_merge_recursive给了我以下内容,

arry3 = array(
    0 => array(
        'title1' => 'data', 
        'title2' => 'data', 
        'title3' => 'data'
    ),
    1 => array(
        'title4' => 'data', 
        'title5' => 'data', 
        'title6' => 'data'
    ),
    .
    .
    .
);

我需要101和102来坚持,我需要数据都在同一个较低级别的数组....

1 个答案:

答案 0 :(得分:2)

我假设您要将后一个数组添加到第一个数组中。因此,use this

array_merge_recursive(array1, array2);

......它会完全按照你的意愿行事。

修改
看来,我的上述解决方案并不完全正确,请使用:

<?

function array_merge_subarrays(array $array1, array $array2) {
    $resultArray = array();
    // The foreach instead of a plain for is to keep the specific values of the keys
    foreach ($array1 as $key => $subarray) {
        $resultArray[$key] = array_merge($subarray, $array2[$key]);
    }
    return $resultArray;
}

$arr1 = array(
    101 => array(
        'title1' => 'data', 
        'title2' => 'data', 
        'title3' => 'data'
    ),
    102 => array(
        'title1' => 'data', 
        'title2' => 'data', 
        'title3' => 'data'
    )
);

$arr2 = array(
    101 => array(
        'title4' => 'data', 
        'title5' => 'data', 
        'title6' => 'data'
    ),
    102 => array(
        'title4' => 'data', 
        'title5' => 'data', 
        'title6' => 'data'
    )
);

print_r(array_merge_subarrays($arr1, $arr2));

/*

OUTPUTS:

Array ( 
    [101] => Array ( 
        [title1] => data
        [title2] => data
        [title3] => data
        [title4] => data
        [title5] => data
        [title6] => data
    )
    [102] => Array (
        [title1] => data 
        [title2] => data 
        [title3] => data 
        [title4] => data 
        [title5] => data 
        [title6] => data
    )
)

*/

?>