Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class SmartArray {
- public $data = [];
- public function __construct(array $data = []) {
- $this->data = $data;
- }
- private static function search_in_array(array $data, $keys) {
- foreach ( $keys as $index => $key ) {
- if (isset($data[$key]))
- return $index;
- }
- return null;
- }
- public function __invoke(...$keys) {
- $data = $this->data;
- while ( !empty($keys) ) {
- $index = self::search_in_array($data, $keys);
- if ( is_null($index) ) return null;
- $data = $data[$keys[$index]];
- array_splice($keys, $index, 1);
- }
- return $data;
- }
- }
- //USAGE
- $data = [
- 'a1' => [
- 'b1' => 1,
- 'b2' => 2
- ],
- 'a2' => [
- 'b1'=> 3,
- 'b2' => [
- 'c1' => 2
- ]
- ]
- ];
- $data = new SmartArray($data);
- var_dump($data('a1', 'b1'));
- var_dump($data('b1', 'a1'));
- var_dump($data('a2', 'b1'));
- var_dump($data('b1', 'a2'));
- var_dump($data('a2', 'b2', 'c1'));
- var_dump($data('c1', 'b2', 'a2'));
- var_dump($data('b2', 'c1', 'a2'));
Add Comment
Please, Sign In to add comment