-1

こんにちは、これらの 2 つの配列があり、それらを反復/マージしたいと考えています。これが私のコードです:

$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,
                        ),
                );
4

2 に答える 2

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;
}
于 2013-08-06T18:28:29.653 に答える
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);

?>

于 2013-08-06T19:33:58.480 に答える