PHP:如何动态地将多维数组转换为一维数组
我有一个这样的数组PHP:如何动态地将多维数组转换为一维数组,php,multidimensional-array,array-merge,Php,Multidimensional Array,Array Merge,我有一个这样的数组 array(4) { [0]=> array(2) { [0]=> string(10) "2012-05-23" [1]=> string(10) "2012-05-31" } [1]=> array(2) { [0]=> string(10) "2012-05-30" [1]=> string(10) "2012-06-07" } [2]=>
array(4) {
[0]=>
array(2) {
[0]=>
string(10) "2012-05-23"
[1]=>
string(10) "2012-05-31"
}
[1]=>
array(2) {
[0]=>
string(10) "2012-05-30"
[1]=>
string(10) "2012-06-07"
}
[2]=>
array(2) {
[0]=>
string(10) "2012-06-02"
[1]=>
string(10) "2012-06-07"
}
}
我想把这个数组变成
array(6) {
[0]=>
string(10) "2012-05-23"
[1]=>
string(10) "2012-05-31"
[2]=>
string(10) "2012-05-30"
[3]=>
string(10) "2012-06-07"
[4]=>
string(10) "2012-06-02"
[5]=>
string(10) "2012-06-07"
}
我想动态地做。我的意思是这里可以有一个100维的数组。所以循环中一定有一些东西:)在php文档评论中有大量的扁平化策略:
我只想用下划线;)
简单搜索从
您可能正在寻找 作用 将用户定义的函数funcname应用于 输入数组。此函数将递归到更深的数组中 如果您想要一个“通用pourpose”解决方案,这就是其中之一
显然,第一次必须调用它,将
$finalArray
作为空数组,将$element
作为起始数组使用以下代码:
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($data));
$l = iterator_to_array($it, false);
您可能希望将其转换为递归函数,这样无论数组有多少个维度,它都能正常工作。@Steven1978:看看mineLooks有用吗。。值得一试(:
<?php
/**
* Flattens an array, or returns FALSE on fail.
*/
function array_flatten($array) {
if (!is_array($array)) {
return FALSE;
}
$result = array();
foreach ($array as $key => $value) {
if (is_array($value)) {
$result = array_merge($result, array_flatten($value));
}
else {
$result[$key] = $value;
}
}
return $result;
}
?>
function makeArray($finalArray,$element) {
foreach ($element as $key => $value){
if(is_array($value)) makeArray($finalArray,$value);
else $finalArray[] = $value;
}
}
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($data));
$l = iterator_to_array($it, false);