lithium\util\Set::flatten PHP Method

flatten() public static method

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

Usage Example

Beispiel #1
0
 public static function find(array $options = array())
 {
     $defaults = array('collect' => true);
     $options += $defaults;
     $data = array();
     $libs = Libraries::get(null, 'path');
     $recursive = true;
     foreach ($libs as $lib => $path) {
         $result = array();
         $path .= '/views/widgets';
         $files = StaticContents::available(compact('path', 'recursive'));
         if (!$files) {
             continue;
         }
         $temp = array_keys(Set::flatten($files, array('separator' => '/')));
         foreach ($temp as $key => $value) {
             if (strpos($value, 'admin.') !== false) {
                 continue;
             }
             if (strpos($value, 'inc.') !== false) {
                 continue;
             }
             $result[$key] = str_replace('.html.php', '', $value);
         }
         $data[$lib] = $result;
     }
     return $data;
 }
All Usage Examples Of lithium\util\Set::flatten