lithium\util\Set::flatten()
Collapses a multi-dimensional array into a single dimension, using a delimited array path for each array element's key, i.e. [array('Foo' => ['Bar' => 'Far'])] becomes ['0.Foo.Bar' => 'Far'].
Parameters
-
array
$data
array to flatten
-
array
$options
Available options are:
'separator'
: String to separate array keys in path (defaults to'.'
).'path'
: Starting point (defaults to null).
Returns
arraySource
public static function flatten($data, array $options = []) {
$defaults = ['separator' => '.', 'path' => null];
$options += $defaults;
$result = [];
if ($options['path'] !== null) {
$options['path'] .= $options['separator'];
}
foreach ($data as $key => $val) {
if (!is_array($val)) {
$result[$options['path'] . $key] = $val;
continue;
}
$opts = ['separator' => $options['separator'], 'path' => $options['path'] . $key];
$result += (array) static::flatten($val, $opts);
}
return $result;
}