-1

给定数组 'a1' 和 'b1' 如何将它们组合起来生成最终数组?基本上用“b1”中匹配值的数组数据替换“a1”中的值。我想问题是是否有一个我没有看到的功能可以做到这一点。

$a1 = array('id1'=>array('a'=>'444-444',
                         'b'=>'222-222',
                         'c'=>'111-111'),
            'id2'=>array('a'=>'888-888',
                         'b'=>'666-666',
                         'c'=>'555-555')
           );

$b1 = array('222-222'=>array('first'=>array('9999',
                                            'dddd',
                                            'yyyy'),
                             'second'=>'mmgghh'
                            ),
            '666-666'=>array('first'=>array('bbbb',
                                            'cccc',
                                            '7777'),
                             'second'=>'ffffgggg'
                            )
           );

所需组合:

array(2) {
  ["id1"]=>
  array(3) {
    ["a"]=>
    string(7) "444-444"
    ["b"]=>
    array(1) {
      ["222-222"]=>
      array(2) {
        ["first"]=>
        array(3) {
          [0]=>
          string(4) "9999"
          [1]=>
          string(4) "dddd"
          [2]=>
          string(4) "yyyy"
        }
        ["second"]=>
        string(6) "mmgghh"
      }
    }
    ["c"]=>
    string(7) "111-111"
  }
  ["id2"]=>
  array(3) {
    ["a"]=>
    string(7) "888-888"
    ["b"]=>
    array(1) {
      ["666-666"]=>
      array(2) {
        ["first"]=>
        array(3) {
          [0]=>
          string(4) "bbbb"
          [1]=>
          string(4) "cccc"
          [2]=>
          string(4) "7777"
        }
        ["second"]=>
        string(6) "ffffgggg"
      }
    }
    ["c"]=>
    string(7) "555-555"
  }
}
4

1 回答 1

0
array_walk_recursive($a1,function(&$value,$key,$addin){
        if(is_scalar($value) && isset($addin[$value])){
                $value = array($value=>$addin[$value]);
        }
   },$b1);
于 2012-06-27T22:42:14.983 回答