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);