Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. public static function array_multilevel (&$array, $name, $fn = null, $separator = '.') {
  2. $name_tree = explode($separator, $name);
  3.  
  4. if (count($name_tree) > 1) {
  5. $name_tree = array_reverse($name_tree);
  6. $name = array_pop($name_tree);
  7. $name_tree = array_reverse($name_tree);
  8. $name_tree = implode($separator, $name_tree);
  9.  
  10. if (!isset($array[$name]))
  11. $array[$name] = [];
  12.  
  13. return static::array_multilevel ($array[$name], $name_tree, $fn, $separator);
  14. } else {
  15. $value = (isset($array[$name]) ? $array[$name] : null);
  16.  
  17. // Functional getter
  18.  
  19. if (!is_null($fn) && is_callable($fn)) {
  20. $result = $fn($value);
  21.  
  22. // Setter
  23.  
  24. if (!is_null($result))
  25. $array[$name] = $result;
  26. }
  27.  
  28. return $array[$name];
  29. }
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement