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

「汎用」ソリューションが必要な場合は、これが1つです。

$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 に答える