2010-12-31 8 views
0

Iは、以下の配列た:どのように特定の形式で配列をマージするのですか?

1)合計は、私がしたかった

Array 
(
[0] => Array 
    (
     [centers] => Array 
      (
       [name] => delhi 
       [id] => 1 
      ) 

     [0] => Array 
      (
       [totaltrained] => 8 
      ) 

    ) 

[1] => Array 
    (
     [centers] => Array 
      (
       [name] => mumbai 
       [id] => 2 
      ) 

     [0] => Array 
      (
       [totaltrained] => 1 
      ) 

    ) 

) 

訓練された合計)

Array 
(
[0] => Array 
    (
     [centers] => Array 
      (
       [name] => delhi 
       [id] => 1 
      ) 

     [0] => Array 
      (
       [totalworking] => 4 
      ) 

    ) 

[1] => Array 
    (
     [centers] => Array 
      (
       [name] => mumbai 
       [id] => 2 
      ) 

     [0] => Array 
      (
       [totalworking] => 1 
      ) 

    ) 

) 

3作業合計

Array 
(
[0] => Array 
    (
     [centers] => Array 
      (
       [name] => delhi 
       [id] => 1 
      ) 

     [0] => Array 
      (
       [totalplaced] => 8 
      ) 

    ) 

[1] => Array 
    (
     [centers] => Array 
      (
       [name] => mumbai 
       [id] => 2 
      ) 

     [0] => Array 
      (
       [totalplaced] => 1 
      ) 

    ) 

) 
)配置します結果の配列が次のようになるようにこれらの配列をマージします

[newarray] => Array(
[0] => Array (
    [centers] => Array 
      (
       [name] => delhi 
       [id] => 1 
       [totalplaced] => 8 
       [totalworking] => 4 
       [totaltrained] => 8 
      ) 
) 
[1]=> Array(
    [centers] => Array 
      (
       [name] => mumbai 
       [id] => 2 
       [totalplaced] => 1 
       [totalworking] => 1 
       [totaltrained] => 1 
      ) 
    ) 
) 

これは私がこの上で私を助けてください

centername  totalplaced totalworking totaltrained 
    delhi    8    4    8 
    mumbai   1    1    1 

を表示する上記のデータを表形式で表現したものです。ここ

おかげ

パンカジクラナ

答えて

1

困難がarray_mergeようなPHPの関数は、()と(array_merge_recursive)重複数字キーキーを再うという数字キーにデータをマージしますが、ないということです。 、

array(
    'test' => 'def', 
    0 => 'xyz', 
    1 => 'uvw' 
); 

だから、あなたが任意のキーの上に「添加物」にカスタム関数が必要になります。

array(
    'test' => 'abc', 
    0 => 'xyz' 
); 

array(
    'test' => 'def', 
    0 => 'uvw' 
); 

のような配列を生成します)(array_mergeと一緒にそれらをマージ:だから例えば二つの配列を与えられましたそれが文字列か数値キーかにかかわらず。試してみよう:

function mixed_key_array_merge() { 

    $args = func_get_args(); 

    $result = array(); 

    foreach ($args as $arg) { 

    // discard non-array arguments; maybe this could be better handled 
    if (!is_array($arg)) { 
     continue; 
    } 

    foreach ($arg as $key => $value) { 

     if (!isset($result[$key])) { 
     $result[$key] = $value; 
     } else if (is_array($result[$key])) { 
     $result[$key] = call_user_func_array('mixed_key_array_merge',array($result[$key],$value)); 
     } 

    } 

    } 

    return $result; 

}