14

次のような配列があります

$arr = array(
    array(
        'test1' => 'testing1'
    ),
    array(
        'test2' => array(
         1 =>'testing2
    )
);

そして私はそれをに変えたい

$newArr = array(
    'test1' => 'testing1',
    'test2' => array(
         1 => 'testing2'
     )
);

だから私はすべての配列要素を1レベル上にシフトしようとしています。

エイト:

これは、2つの配列を組み合わせる私の方法です:

public function arrayMerge($arr1, $arr2)
            {
                foreach($arr2 as $key => $value) {

                    $condition = (array_key_exists($key, $arr1) && is_array($value));
                    $arr1[$key] = ($condition ? $this->arrayMerge($arr1[$key], $arr2[$key]) : $value);
                }

                return $arr1;
            }
4

2 に答える 2

24

それはやや些細なことですが、多くの方法が可能です。

たとえば、配列ユニオン演算子 ( +)を使用して、配列内のすべての配列のユニオンを作成するドキュメント:

$newArr = array();
foreach ($arr as $subarray)
    $newArr += $subarray;

または、 Docs を介して一度にすべてのサブ配列で Docs を使用することarray_mergeによって:call_user_func_array

$newArray = call_user_func_array('array_merge', $arr);
于 2012-05-03T23:12:51.713 に答える
13

試す

$arr = array(
        array('test1' => 'testing1' ), 
        array('test2' => array(1 =>'testing2')) 
);

$new = array();
foreach($arr as $value) {
    $new += $value;
}
var_dump($new);

出力

array
  'test1' => string 'testing1' (length=8)
  'test2' => 
    array
      1 => string 'testing2' (length=8)
于 2012-05-03T23:13:35.857 に答える