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操作符。。非常感谢你!