ユーザ用ツール

サイト用ツール


多重配列のすべて階層のバリューを取得する

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

多重配列のすべて階層のバリューを取得する [2013/12/02 10:29] (現在)
luis_lee 作成
ライン 1: ライン 1:
 +====== 多重配列のすべて階層のバリューを取得する ======
 +[[配列関数]]
 +
 +多重配列のすべて階層のバリューを取得する
 +
 +「use」を使った無名関数の配列取得
 +
 +配列階層をループしすべてのデータを取得する。
 +
 +
 +配列データ
 +   
 +  $array = array(1, 5, array(3, array(22, 5,​array(array(array(array(34,​67),​71))))),​ 12);
 +   
 +
 +**その1 **
 +
 +  ​
 +  function responseSpace($response) {
 +  foreach ($response as $key => $value) {
 +  if ($value === null) {
 +  // 空文字出力
 +  $response[$key] = '';​
 +  } elseif (is_array($value)) {
 +  // 再変換
 +  $response[$key] = responseSpace($value);​
 +  } else {
 +  // そのまま出力
 +  $response[$key] = $value;
 +  }
 +  }
 +  return $response;
 +  }
 +
 +
 +
 +**その2 **
 +  $flatten = function($array) use(&​$flatten) {
 +  $result = array();
 +  ​
 +  foreach ($array as $value) {
 +  if (is_array($value)) {
 +  // 配列ならこの無名関数を再度呼び出す
 +  $result = array_merge($result,​ $flatten($value));​
 +  } else {
 +  $result[] = $value;
 +  }
 +  }
 +  return $result;
 +  };
 +
 +  $result = $flatten($array); ​
 +   
 +  echo join(',​ ', $result); #=> 1, 5, 3, 22, 5, 12
 +
 +
 +**その3 **
 +  function F_GET_ARRAY_VALUES($a = array()){
 +  $r = function ($a) use (&$r) {
 +  static $v = array();
 +  foreach ($a as $ary) {
 +  is_array($ary) ? $r($ary) : $v[] = $ary;
 +  }
 +  return $v;
 +  };
 +  return $r($a);
 +  }
 +  ​
 +  // テストデータからvalues値だけ取ってくる。
 +  var_dump(F_GET_ARRAY_VALUES($test_array));​
  
多重配列のすべて階層のバリューを取得する.txt · 最終更新: 2013/12/02 10:29 by luis_lee