-1

配列 'a1' と 'b1' が与えられた場合、それらをどのように組み合わせて最終的な配列を生成できますか? 基本的に、「a1」内の値を「b1」内の一致する値の配列データに置き換えます。問題は、私が見ていないこれを行うことができる機能があるかどうかだと思います。

$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 に答える