Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP重置没有循环的数组的第一级_Php_Arrays - Fatal编程技术网

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

PHP重置没有循环的数组的第一级,php,arrays,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

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

$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')
);
我会重置它的第一级,如下所示

$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);
但它只返回子数组的第一个键


有什么想法吗?

试试这个:让它与
array\u reduce
一起工作

$result = array_reduce($array, function($final, $value) {
    return array_merge($final, $value);
}, array());

PHP5.6在PHP中引入了可变函数,它允许使用splat操作符编写函数,将任何附加参数放入同一数组:

该操作符的另一个用途(可能不太为人所知)是它以另一种方式工作。通过在函数调用中将该运算符放在数组之前,它使该函数将该数组的条目作为内联编写

它允许您键入:

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

发送$array通常会返回未更改的$array。使用splat可以使
数组_merge
处理其中未定义数量的二级数组。由于array\u merge本身是一个可变函数,可以合并发送给它的任何数组,因此它可以工作。

我建议您尝试一下,如果无法让它工作,请寻求帮助尝试一下drkey是尝试或学习其他方法的原因吗?因为与循环相比,数组映射需要大约一个可比较的字符数。(你也可以在一行中编写这样的循环)
调用用户函数数组('array\u merge',$array)
我不认为有必要进行下一票,只要问问..令人惊讶的是,我甚至不知道splat操作符。。非常感谢你!