Open Journal Systems  3.3.0
ArrayListTrait.php
1 <?php
9 namespace Seboettg\Collection;
10 
11 
12 trait ArrayListTrait
13 {
19  protected $array;
20 
26  public function clear()
27  {
28  $this->array = [];
29  return $this;
30  }
31 
37  public function get($key)
38  {
39  return isset($this->array[$key]) ? $this->array[$key] : null;
40  }
41 
50  public function current()
51  {
52  return current($this->array);
53  }
54 
62  public function next()
63  {
64  return next($this->array);
65  }
66 
74  public function prev()
75  {
76  return prev($this->array);
77  }
78 
86  public function set($key, $element)
87  {
88  $this->array[$key] = $element;
89  return $this;
90  }
91 
97  public function setArray(array $array)
98  {
99  return $this->replace($array);
100  }
101 
108  public function append($element)
109  {
110  $this->array[] = $element;
111  return $this;
112  }
113 
123  public function add($key, $element)
124  {
125 
126  if (!array_key_exists($key, $this->array)) {
127  $this->array[$key] = $element;
128  } elseif (is_array($this->array[$key])) {
129  $this->array[$key][] = $element;
130  } else {
131  $this->array[$key] = [$this->array[$key], $element];
132  }
133 
134  return $this;
135  }
136 
143  public function remove($key)
144  {
145  unset($this->array[$key]);
146  return $this;
147  }
148 
155  public function hasKey($key)
156  {
157  return array_key_exists($key, $this->array);
158  }
159 
168  public function hasValue($value)
169  {
170  $result = array_search($value, $this->array, true);
171  return ($result !== false);
172  }
173 
180  public function replace(array $data)
181  {
182  $this->array = $data;
183  return $this;
184  }
185 
189  public function getIterator()
190  {
191  return new \ArrayIterator($this->array);
192  }
193 
201  public function offsetGet($offset)
202  {
203  return isset($this->array[$offset]) ? $this->array[$offset] : null;
204  }
205 
212  public function offsetSet($offset, $value)
213  {
214  $this->array[$offset] = $value;
215  }
216 
224  public function offsetExists($offset)
225  {
226  return isset($this->array[$offset]);
227  }
228 
234  public function offsetUnset($offset)
235  {
236  unset($this->array[$offset]);
237  }
238 
242  public function toArray()
243  {
244  return $this->array;
245  }
246 
250  public function count()
251  {
252  return count($this->array);
253  }
254 
260  public function shuffle() {
261  shuffle($this->array);
262  return $this;
263  }
264 
270  public function filter(\Closure $closure)
271  {
272  return new ArrayList(array_filter($this->array, $closure));
273  }
274 
280  public function filterByKeys(array $keys)
281  {
282  return new ArrayList(
283  array_filter($this->array, function($key) use ($keys) {
284  return array_search($key, $keys) !== false;
285  }, ARRAY_FILTER_USE_KEY)
286  );
287  }
288 
294  public function map(\closure $mapFunction)
295  {
296  return new ArrayList(array_map($mapFunction, $this->array));
297  }
298 
303  public function flatten()
304  {
305  $flattenedArray = [];
306  array_walk_recursive($this->array, function($item) use(&$flattenedArray) {
307  $flattenedArray[] = $item;
308  });
309  return new ArrayList($flattenedArray);
310  }
311 }
Seboettg\Collection\replace
replace(array $data)
Definition: ArrayListTrait.php:183
Seboettg\Collection\hasValue
hasValue($value)
Definition: ArrayListTrait.php:171
Seboettg\Collection
Definition: ArrayList.php:12
Seboettg\Collection\current
current()
Definition: ArrayListTrait.php:53
Seboettg\Collection\add
add($key, $element)
Definition: ArrayListTrait.php:126
Seboettg\Collection\getIterator
getIterator()
Definition: ArrayListTrait.php:192
Seboettg\Collection\offsetGet
offsetGet($offset)
Definition: ArrayListTrait.php:204
Seboettg\Collection\toArray
toArray()
Definition: ArrayListTrait.php:245
Seboettg\Collection\map
map(\closure $mapFunction)
Definition: ArrayListTrait.php:297
Seboettg\Collection\next
next()
Definition: ArrayListTrait.php:65
Seboettg\Collection\ArrayListTrait
trait ArrayListTrait
Definition: ArrayListTrait.php:13
Seboettg\Collection\flatten
flatten()
Definition: ArrayListTrait.php:306
Seboettg\Collection\prev
prev()
Definition: ArrayListTrait.php:77
Seboettg\Collection\clear
clear()
Definition: ArrayListTrait.php:29
Seboettg\Collection\offsetSet
offsetSet($offset, $value)
Definition: ArrayListTrait.php:215
Seboettg\Collection\count
count()
Definition: ArrayListTrait.php:253
Seboettg\Collection\filterByKeys
filterByKeys(array $keys)
Definition: ArrayListTrait.php:283
Seboettg\Collection\hasKey
hasKey($key)
Definition: ArrayListTrait.php:158
Seboettg\Collection\append
append($element)
Definition: ArrayListTrait.php:111
Seboettg\Collection\offsetUnset
offsetUnset($offset)
Definition: ArrayListTrait.php:237
Seboettg\Collection\shuffle
shuffle()
Definition: ArrayListTrait.php:263
Seboettg\Collection\filter
filter(\Closure $closure)
Definition: ArrayListTrait.php:273
Seboettg\Collection\setArray
setArray(array $array)
Definition: ArrayListTrait.php:100
Seboettg\Collection\ArrayList
Definition: ArrayList.php:20
Seboettg\Collection\offsetExists
offsetExists($offset)
Definition: ArrayListTrait.php:227