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 维的数组。所以一定是循环中的东西:)

4

7 回答 7

4
$final_array =array();
foreach ($data as $val)
 {
    foreach($val as $val2)
     {
        $final_array[] = $val2;
     }
 }
于 2012-05-31T11:37:49.633 回答
3
function makeArray($finalArray,$element) {
 foreach ($element as $key => $value){
  if(is_array($value)) makeArray($finalArray,$value);
  else $finalArray[] = $value;
 }
}

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

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

于 2012-05-31T11:41:36.640 回答
2

使用以下代码:

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

$l = iterator_to_array($it, false);
于 2014-04-15T17:40:18.467 回答
1

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

于 2012-05-31T11:38:15.317 回答
1

我只会使用下划线;) http://brianhaveri.github.com/Underscore.php/

于 2012-05-31T11:38:34.590 回答
0

简单搜索从PHP.net 文档返回

<?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; 
} 
?>
于 2012-05-31T11:39:52.067 回答
0

可能你正在寻找

数组遍历递归函数

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

于 2012-05-31T11:40:22.153 回答