2017-09-30 9 views
0

私はCodeIgniterのPHPのプログラミングを使用していますが、私はこのマージ3つの多次元配列のコードイグナイタ

array(1) { 
[1506546000]=> 
["purchases"]=>int(120) 
["exchange_items"]=>int(10) 
["production_system"]=>int(16050) 
} 
array(1) { 
[1506373200]=> 
["purchases"]=>null 
["exchange_items"]=>null 
["production_system"]=>int(2250) 
} 
array(1) { 
[1506373200]=> 
["purchases"]=>null 
["exchange_items"]=>null 
["production_system"]=>int(150) 
} 

ようになり、キーを1列でそれらをマージする必要が3の配列

array(1) { 
[1506546000]=> 
object(stdClass)#34 (1) { 
["purchases"]=>int(120) 
} 
} 
array(1) { 
[1506546000]=> 
object(stdClass)#32 (1) { 
["exchange_items"]=>int(10) 
} 
} 
array(3) { 
[1506546000]=> 
object(stdClass)#40 (1) { 
["production_system"]=>int(16050) 
} 
[1506373200]=> 
object(stdClass)#33 (1) { 
["production_system"]=>int(2250) 
} 
[1506805200]=> 
object(stdClass)#39 (1) { 
["production_system"]=>int(150) 
} 
} 

のように私が持っています私は array_merge_recursive()を使用しましたが、それは私に必要なものを正確に与えてくれません。 これを行うにはどんな助けが必要ですか?

答えて

1

私はあなたがやりたいことをするだろうが、私は間違っている可能性があるPHPの機能を内蔵しているとは思わない。あなたはこれを行うことができます:

<?php 

$final_arr = array(); 

function setup() 
{ 
    return array(
     'purchases'   => NULL, 
     'exchange_items' => NULL, 
     'production_system' => NULL 
    ); 
} 

$arr1 = array(
    1506546000 => (object) array(
     'purchases' => 120 
    ) 
); 

$arr2 = array(
    1506546000 => (object) array(
     'exchange_items' => 10 
    ) 
); 

$arr3 = array(
    1506546000 => (object) array(
     'production_system' => 16050 
    ), 
    1506373200 => (object) array(
     'production_system' => 2250 
    ), 
    1506805200 => (object) array(
     'production_system' => 150 
    ) 
); 

foreach(array($arr1, $arr2, $arr3) as $array) 
{ 
    foreach($array as $k => $v) 
    { 
     if(! array_key_exists($k, $final_arr)) 
      $final_arr[$k] = setup(); 

     foreach($v as $k2 => $v2) 
     { 
      $final_arr[$k][$k2] = $v2; 
     } 
    } 
} 

echo '<pre>'; 
print_r($final_arr); 
echo '</pre>';