PHP:如何动态地将多维数组转换为单维

时间:2012-05-31 11:34:02

标签: 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(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维的阵列。所以必须是循环中的东西:)

7 个答案:

答案 0 :(得分:4)

$final_array =array();
foreach ($data as $val)
 {
    foreach($val as $val2)
     {
        $final_array[] = $val2;
     }
 }

答案 1 :(得分:3)

function makeArray($finalArray,$element) {
 foreach ($element as $key => $value){
  if(is_array($value)) makeArray($finalArray,$value);
  else $finalArray[] = $value;
 }
}

如果您想要一个“通用”解决方案,那就是

显然你必须第一次调用它,$finalArray为空数组,$element为起始数组

答案 2 :(得分:2)

使用以下代码:

$it =  new RecursiveIteratorIterator(new RecursiveArrayIterator($data));

$l = iterator_to_array($it, false);

答案 3 :(得分:1)

在php文档评论中有很多扁平化策略: http://php.net/manual/en/function.array-values.php

答案 4 :(得分:1)

答案 5 :(得分:0)

简单搜索从PHP.net docs

返回此信息
<?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; 
} 
?>

答案 6 :(得分:0)

可能你正在寻找

array walk recursive功能

  

将用户定义的函数funcname应用于每个元素   输入数组。此函数将递归到更深的数组中。