Possible Duplicate:
Convert multidimensional array into single array
我有这个数组:
Array
(
[one] => one_value
[two] => Array
(
[four] => four_value
[five] => five_value
)
[three] => Array
(
[six] => Array
(
[seven] => seven_value
)
)
)
我想将它转换为这种类型的数组:
Array
(
[one] => one_value
[two-four] => four_value
[two-five] => five_value
[three-six-seven] => seven_value
)
我怎样才能实现这个目标?具有某种“递归性”?但如何呢? :\ 提前致谢!
最佳答案
<?php
$array = array(
'one' => 'one_value',
'two' => array
(
'four' => 'four_value',
'five' => 'five_value'
),
'three' => array
(
'six' => array
(
'seven' => 'seven_value'
)
)
);
function flatten($array, $prefix = '') {
$arr = array();
foreach($array as $k => $v) {
if(is_array($v)) {
$arr = array_merge($arr, flatten($v, $prefix . $k . '-'));
}
else{
$arr[$prefix . $k] = $v;
}
}
return $arr;
}
var_dump(flatten($array));
//output:
//array(4) {
// ["one"]=>
// string(9) "one_value"
// ["two-four"]=>
// string(10) "four_value"
// ["two-five"]=>
// string(10) "five_value"
// ["three-six-seven"]=>
// string(11) "seven_value"
//}
关于PHP多维数组转简单数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9416661/