PHP中如何将多维数组压缩成一维数组


How to flatten (compress) multi-dimensional array into one-dimensional array in PHP?

我得到这个数组。我想把其他3个数组都放到[0]=> array中。不需要唯一的值,只想将所有数组合并到[0]=> array .

Array
 (
  [0] => Array
    (
        [0] => Array
            (
                [Campaign] => xxx
                [Phone] => 111
                [State] => cd
            )
         )
 [1] => Array
    (
        [0] => Array
            (
                [Campaign] => zxxxzx
                [Phone] => 111111
                [State] => zxxx
            )
         )
  [2] => Array
    (
        [0] => Array
            (
                [Campaign] => aaaa
                [Phone] => 111
                [State] => Csd
            )
        )
  [3] => Array
    (
        [0] => Array
            (
                [Campaign] => sasa
                [Phone] => 111
                [State] => asas
            )
          )
)

这是命名有多重要的另一个例子。你正在处理的基本上是:

$recordsGroups = array(
    // first group:
    array(
        // record 1:
        array(
            'key1' => 'val1',
            'key2' => 'val2',
        ),
        // record 2:
        array(
            'key1' => 'aaa',
            'key2' => 'bbb',
        ),
    ),
    // 2nd group:
    array(
        // record 3:
        array(
            'key1' => 'ccc',
            'key2' => 'ddd',
        ),
    ),
);

你可能要做的是:

$records = array();
foreach ($recordsGroups as $group)
    foreach ($group as $record)
        $records[] = $record;

这将给你:

$records = array(
    // record 1:
    array(
        'key1' => 'val1',
        'key2' => 'val2',
    ),
    // record 2:
    array(
        'key1' => 'aaa',
        'key2' => 'bbb',
    ),
    // record 3:
    array(
        'key1' => 'ccc',
        'key2' => 'ddd',
    ),
);

这应该很好:

$array = call_user_func_array('array_merge', $array);

或参数解包通过…(长条木板运营商):

$array = array_merge(...$array);

因为数组不能有重复的键,所以这个多dim数组可以被压缩成一个关联数组的索引数组。array_column()将很快完成这项任务。

代码(演示):

$array=[
    [
        ['Campaign'=>'xxx','Phone'=>'111','State'=>'cd']
    ],
    [
        ['Campaign'=>'zxxxzx','Phone'=>'111111','State'=>'zxxx']
    ],
    [
        ['Campaign'=>'aaaa','Phone'=>'111','State'=>'Csd']
    ],
    [
        ['Campaign'=>'sasa','Phone'=>'111','State'=>'asas']
    ]
];
var_export(array_column($array,0));
输出:

array (
  0 => 
  array (
    'Campaign' => 'xxx',
    'Phone' => '111',
    'State' => 'cd',
  ),
  1 => 
  array (
    'Campaign' => 'zxxxzx',
    'Phone' => '111111',
    'State' => 'zxxx',
  ),
  2 => 
  array (
    'Campaign' => 'aaaa',
    'Phone' => '111',
    'State' => 'Csd',
  ),
  3 => 
  array (
    'Campaign' => 'sasa',
    'Phone' => '111',
    'State' => 'asas',
  ),
)