PHP重置没有循环的数组的第一级

时间:2017-07-31 09:55:41

标签: php arrays

我有一个简单的多维数组,如下所示

$array = array(
    array('key1'=>array('a','b')),
    array('key2'=>array('c','d'), 'key3'=>array('e','f')),
    array('key4'=>array('g','h'), 'key5'=>array('i','j'), 'key6'=>array('k','l', 'm'))
);

我将重置其第一级,如下所示

$array = array(
    'key1'=>array('a','b'),
    'key2'=>array('c','d'),
    'key3'=>array('e','f'),
    'key4'=>array('g','h'),
    'key5'=>array('i','j'),
    'key6'=>array('k','l','m')
);

我知道用foreach循环来实现它很容易,但我想知道是否可以使用一行代码来实现它。

到目前为止我尝试了什么

array_map('key', $array);

但它只返回子数组的第一个键。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

PHP 5.6在PHP中引入了可变参数函数,允许用函数编写函数,使用splat运算符将任何其他参数带入同一数组:...

另一个 - 也许相当不为人知 - 使用该运算符的方式是它的另一种方式。通过在函数调用中将该运算符放在数组之前,它使该函数获取该数组的条目,就像您编写 inline 一样。

允许您输入:

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

发送$ array通常会返回$ array不变。使用splat使array_merge可以处理未定义数量的第二级数组。由于array_merge本身是一个可变函数,可以合并您发送给它的任何数组,因此可以正常工作。

答案 1 :(得分:1)

试试这个:让它适用于)

array_reduce

online example