php数组迭代一个数组而不是合并它们以获得最终数组

时间:2013-08-06 18:03:33

标签: php arrays

嗨我有这两个数组,我想迭代/合并它们。这是我的代码:

$userConfigArray = array(
                        array(
                                'country'=>'USA',
                                'bowieServer'=>$bowieSrvUSA,
                                'RMXserver'=>$rmxSrvUSA,
                              ),

                        array(
                                'country'=>'GBR',
                                'bowieServer'=>$bowieSrvEU,
                                'RMXserver'=>$rmxSrvEU,
                              ),

        );

$browseConfigArray = array(
                        array(
                                'opt' => '3',
                                'browseMax'=>'1',
                                'format'=>'xml',
                             ),
                        array(
                                'opt' => '4,5',
                                'browseMax'=>'1',
                                'format'=>'xml',
                             ),
                );

我希望我的最终输出如下:

array(
                        array(
                                'opt' => '3',
                                'browseMax'=>'1',
                                'format'=>'xml',
                                'country'=>'USA',
                                'bowieServer'=>$bowieSrvUSA,
                                'RMXserver'=>$rmxSrvUSA,
                             ),
                        array(
                                'opt' => '4,5',
                                'browseMax'=>'1',
                                'format'=>'xml',
                                'country'=>'USA',
                                'bowieServer'=>$bowieSrvUSA,
                                'RMXserver'=>$rmxSrvUSA,

                             ),
                        array(
                                'opt' => '3',
                                'browseMax'=>'1',
                                'format'=>'xml',
                                'country'=>'GBR',
                                'bowieServer'=>$bowieSrvEU,
                                'RMXserver'=>$rmxSrvEU,
                        ),
                        array(
                                'opt' => '4,5',
                                'browseMax'=>'1',
                                'format'=>'xml',
                                'country'=>'GBR',
                                'bowieServer'=>$bowieSrvEU,
                                'RMXserver'=>$rmxSrvEU,
                        ),
                );

2 个答案:

答案 0 :(得分:0)

试试这个:

function array_merge_subitems($arr1, $arr2) {
    $offset = 0;
    $result = array();
    while (isset($arr1[$offset]) && isset($arr2[$offset])) {
        $r1 = (isset($arr1[$offset])) ? $arr1[$offset] : array();
        $r2 = (isset($arr2[$offset])) ? $arr2[$offset] : array();
        $result[] = array_merge($r1, $r2);

        $offset++;
    }

    return $result;
}

答案 1 :(得分:0)

要遍历多维数组,请使用带回调函数的array_walk php函数。

array_walk(array &$input , callable $funcname [, mixed $userdata = NULL ]);

解决方案:

<?php
$browserConfigArray = 
    array(array('opt' => '3', 'browseMax'=>'1', 'format'=>'xml'), 
          array('opt' =>'4.5', 'browseMax'=>'2', 'format'=>'json')
    );
$userConfigArray = array(
       array('country'=>'USA', 'bowieServer'=>'USA', 'RMXserver'=>'1'),
       array('country'=>'UK', 'bowieServer'=>'UK', 'RMXserver'=>'2'));

static $finalArray = array();

function walkArray(&$item, $key, $params)
{
    $item = array_merge($item, $params);    
}
foreach($userConfigArray as $config) {
    array_walk($browserConfigArray, 'walkArray', $config);
    $finalArray = array_merge($finalArray, $browserConfigArray);
}
print_r($finalArray);

&GT;

相关问题