1: <?php
2:
3: namespace Deimos\Helper\Helpers\Arr;
4:
5: trait KeyTrait
6: {
7:
8: /**
9: * @param array $storage
10: *
11: * @return mixed
12: */
13: public function firstKey(array $storage)
14: {
15: reset($storage);
16:
17: return key($storage);
18: }
19:
20: /**
21: * @param array $storage
22: *
23: * @return mixed
24: */
25: public function lastKey(array $storage)
26: {
27: end($storage);
28:
29: return key($storage);
30: }
31:
32: /**
33: * @param array $storage
34: * @param string $key
35: *
36: * @return mixed
37: */
38: public function at(array $storage, $key)
39: {
40: return $storage[$key];
41: }
42:
43: /**
44: * 0=>'', 2=> ''...
45: *
46: * @param array $storage
47: *
48: * @return array
49: */
50: public function oddKey(array $storage)
51: {
52: return $this->filter($storage, function ($value, $key)
53: {
54: return $this->helper->math()->isOdd($key);
55: });
56: }
57:
58: /**
59: * 1=>'', 3=>''...
60: *
61: * @param array $storage
62: *
63: * @return array
64: */
65: public function evenKey(array $storage)
66: {
67: return $this->filter($storage, function ($value, $key)
68: {
69: return $this->helper->math()->isEven($key);
70: });
71: }
72:
73: /**
74: * @param array $storage
75: * @param string $key
76: *
77: * @return bool
78: */
79: public function keyExists(array $storage, $key)
80: {
81: return isset($storage[$key]) || array_key_exists($key, $storage);
82: }
83:
84: /**
85: * @param string $key
86: *
87: * @return array
88: */
89: protected function keys($key)
90: {
91: return explode('.', $key);
92: }
93:
94: }
95: