php使用键展平多维数组
我有这个数组php使用键展平多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有这个数组 $array =array('a', 'b', array(array('c'), 'd'), 'e', array('f'), 'g'); 我想得到这个结果 Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f [6] => g ) 我正在使用此功能: function flatten ($array) {
$array =array('a', 'b', array(array('c'), 'd'), 'e', array('f'), 'g');
我想得到这个结果
Array
(
[0] => a
[1] => b
[2] => c
[3] => d
[4] => e
[5] => f
[6] => g
)
我正在使用此功能:
function flatten ($array) {
$result = array();
array_walk_recursive($array, function($v, $k) use (&$result) {
$result[] = $v;
});
return $result;
}
我得到的结果是:
Array
(
[0] => array('a', 'b',
[1] => array(array('c'), 'd'),
[2] => 'e', array('f'), 'g')
)
与原始输入数组相同
任何帮助都将不胜感激
function flatten($a) {
if(!is_array($a))
return array($a);
return call_user_func_array(
'array_merge',
array_map('flatten', $a)
);
}
$a = array('a', 'b', array(array('c'), 'd'), 'e', array('f'), 'g');
print_r(flatten($a));
提供所需的输出
或者,您也可以使用SPL,尤其是
递归迭代器
和递归数组迭代器
。考虑这个例子:
$array = array('a', 'b', array(array('c'), 'd'), 'e', array('f'), 'g');
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach($iterator as $value) {
$data[] = $value;
}
echo '<pre>';
print_r($data);
echo '</pre>';
你使用什么版本的php?你得到了一个多么疯狂的数组。@user888300:你能用有效的php语法重新发布你的原始数组吗?(无var_转储)。我怀疑它实际上并不是你想象的那样。@user888300:嗯,对我来说很有用。复制粘贴:)@DushyantJoshi真的吗?你可以看看我所有的答案,我总是建议你用这个来压平阵列是的,你是对的。但是你会对这个链接发表评论,而不是一次又一次地发布相同的答案。这里,@Dushyant Joshi:你能链接到这个特定的答案吗?因为我真的没看到。
$array = array('a', 'b', array(array('c'), 'd'), 'e', array('f'), 'g');
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach($iterator as $value) {
$data[] = $value;
}
echo '<pre>';
print_r($data);
echo '</pre>';
Array
(
[0] => a
[1] => b
[2] => c
[3] => d
[4] => e
[5] => f
[6] => g
)