ユーザ用ツール

サイト用ツール

Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/9/9adbe927a5c405d7793159eaa8245d4c.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/9/9adbe927a5c405d7793159eaa8245d4c.metadata failed

多重配列のすべて階層のバリューを取得する
Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/9/9adbe927a5c405d7793159eaa8245d4c.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/b/bfdf1d192511b26fde2c2e0f96b4916f.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/b/bfdf1d192511b26fde2c2e0f96b4916f.metadata failed
Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/9/9adbe927a5c405d7793159eaa8245d4c.xhtml failed

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

配列関数

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

「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