Guest User

Untitled

a guest
Nov 25th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. <?php
  2.  
  3. class SmartArray {
  4.  
  5. public $data = [];
  6.  
  7. public function __construct(array $data = []) {
  8. $this->data = $data;
  9. }
  10.  
  11. private static function search_in_array(array $data, $keys) {
  12. foreach ( $keys as $index => $key ) {
  13. if (isset($data[$key]))
  14. return $index;
  15. }
  16. return null;
  17. }
  18.  
  19. public function __invoke(...$keys) {
  20. $data = $this->data;
  21.  
  22. while ( !empty($keys) ) {
  23. $index = self::search_in_array($data, $keys);
  24. if ( is_null($index) ) return null;
  25. $data = $data[$keys[$index]];
  26. array_splice($keys, $index, 1);
  27. }
  28.  
  29. return $data;
  30. }
  31.  
  32. }
  33.  
  34. //USAGE
  35.  
  36. $data = [
  37. 'a1' => [
  38. 'b1' => 1,
  39. 'b2' => 2
  40. ],
  41. 'a2' => [
  42. 'b1'=> 3,
  43. 'b2' => [
  44. 'c1' => 2
  45. ]
  46. ]
  47. ];
  48.  
  49. $data = new SmartArray($data);
  50.  
  51. var_dump($data('a1', 'b1'));
  52. var_dump($data('b1', 'a1'));
  53.  
  54.  
  55. var_dump($data('a2', 'b1'));
  56. var_dump($data('b1', 'a2'));
  57.  
  58. var_dump($data('a2', 'b2', 'c1'));
  59. var_dump($data('c1', 'b2', 'a2'));
  60. var_dump($data('b2', 'c1', 'a2'));
Add Comment
Please, Sign In to add comment