You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
243 lines
5.5 KiB
243 lines
5.5 KiB
<?php |
|
/** |
|
* PHPLib |
|
* |
|
* A PHP library to wrap php functions in a standard fashion |
|
* |
|
* @package PHPLib |
|
* @author Timothy J. Warren |
|
* @copyright Copyright (c) 2013 |
|
* @link https://github.com/aviat4ion/PHPLib |
|
* @license MIT |
|
*/ |
|
|
|
// -------------------------------------------------------------------------- |
|
|
|
namespace PHPUtil; |
|
|
|
/** |
|
* Wrapper over array functions with a consistent interface |
|
*/ |
|
class Arr { |
|
|
|
/** |
|
* Original array to manipulate |
|
* @var array |
|
*/ |
|
protected $original; |
|
|
|
/** |
|
* Constructor |
|
* |
|
* @param array $arr |
|
* @return Arr |
|
*/ |
|
public function __construct($arr) |
|
{ |
|
$this->original = $arr; |
|
} |
|
|
|
/** |
|
* Enable using the object as a function |
|
* |
|
* @param string $arr |
|
* @return $this |
|
*/ |
|
public function __invoke($arr) |
|
{ |
|
$this->__construct($arr); |
|
return $this; |
|
} |
|
|
|
/** |
|
* Return the keys or a subset of the keys of an array |
|
* |
|
* @see http://php.net/manual/function.array-keys.php |
|
* @param mixed $search_value |
|
* @param bool $strict |
|
* @return array |
|
*/ |
|
public function keys($search_value=NULL, $strict=FALSE) |
|
{ |
|
return array_keys($this->original, $search_value, $strict); |
|
} |
|
|
|
/** |
|
* Returns the values from the input array with a numeric index |
|
* |
|
* @return array |
|
*/ |
|
public function values() |
|
{ |
|
return array_values($this->original); |
|
} |
|
|
|
/** |
|
* Returns an array of elements from the input array that match the |
|
* specified pattern |
|
* |
|
* @param mixed $pattern |
|
* @param mixed $invert |
|
* @return array |
|
*/ |
|
public function grep($pattern, $invert=FALSE) |
|
{ |
|
$flags = ($invert == TRUE) ? PREG_GREP_INVERT : 0; |
|
|
|
return preg_grep($pattern, $this->original, $flags); |
|
} |
|
|
|
/** |
|
* Replace elements in the main array with the values in the passed arrays |
|
* (Takes a variable number of arguments) |
|
* |
|
* @see http://php.net/manual/function.array-replace.php |
|
* @return array |
|
*/ |
|
public function replace() |
|
{ |
|
$args = func_get_args(); |
|
array_unshift($args, $this->original); |
|
|
|
return call_user_func_array('array_replace', $args); |
|
} |
|
|
|
/** |
|
* Combine arrays |
|
* (Takes a variable number of arguments) |
|
* |
|
* @see http://php.net/manual/function.array-merge.php |
|
* @return array |
|
*/ |
|
public function merge() |
|
{ |
|
$args = func_get_args(); |
|
array_unshift($args, $this->original); |
|
|
|
return call_user_func_array('array_merge', $args); |
|
} |
|
|
|
/** |
|
* Return a new array from the original with duplicate items removed |
|
* |
|
* @see http://php.net/manual/function.array-unique.php |
|
* @param |
|
* @return array |
|
*/ |
|
public function unique($sort_flags=SORT_STRING) |
|
{ |
|
return array_unique($this->original, $sort_flags); |
|
} |
|
|
|
/** |
|
* Return an array with elements having the defined values |
|
* |
|
* @see http://php.net/manual/function.array-fill.php |
|
* @param int $start_index |
|
* @param int $num |
|
* @param mixed $value |
|
* @return array |
|
*/ |
|
public function fill($start_index, $num, $value) |
|
{ |
|
return array_file($start_index, $num, $value); |
|
} |
|
|
|
/** |
|
* Lengthen array to $pad_length with $pad_value |
|
* |
|
* @see http://php.net/manual/function.array-pad.php |
|
* @param int $pad_size |
|
* @param mixed $pad_value |
|
* @return array |
|
*/ |
|
public function pad($pad_size, $pad_value) |
|
{ |
|
return array_pad($this->original, $pad_size, $pad_value); |
|
} |
|
|
|
/** |
|
* Return an array with keys that are the values of the input |
|
* array, and values as the frequency of those values |
|
* |
|
* @see http://php.net/manual/function.array-count-values.php |
|
* @return array |
|
*/ |
|
public function count_values() |
|
{ |
|
return array_count_values($this->original); |
|
} |
|
|
|
/** |
|
* Return an array with keys and values reversed from the input array |
|
* |
|
* @see http://php.net/manual/function.array-flip.php |
|
* @return array |
|
*/ |
|
public function flip() |
|
{ |
|
return array_flip($this->original); |
|
} |
|
|
|
/** |
|
* Returns the sum of all the values in the array |
|
* |
|
* @see http://php.net/manual/function.array-sum.php |
|
* @return number |
|
*/ |
|
public function sum() |
|
{ |
|
return array_sum($this->original); |
|
} |
|
|
|
/** |
|
* Return a sorted array |
|
* |
|
* @see http://php.net/manual/function.asort.php |
|
* @param int $sort_flags |
|
* @return array |
|
*/ |
|
public function sort($sort_flags=SORT_REGULAR) |
|
{ |
|
asort($this->original, $sort_flags); |
|
return $this->original; |
|
} |
|
|
|
/** |
|
* Return a reverse-sorted array |
|
* |
|
* @see http://php.net/manual/function.asort.php |
|
* @param int $sort_flags |
|
* @return array |
|
*/ |
|
public function reverse_sort($sort_flags=SORT_REGULAR) |
|
{ |
|
rsort($this->original, $sort_flags); |
|
return $this->original; |
|
} |
|
|
|
/** |
|
* Reverse the order of the array |
|
* |
|
* @see http://php.net/manual/function.array-reverse.php |
|
* @param bool $preserve_keys |
|
* @return array |
|
*/ |
|
public function reverse($preserve_keys=FALSE) |
|
{ |
|
return array_reverse($this->original, $preserve_keys); |
|
} |
|
|
|
/** |
|
* Filter elements of the input array using a callback function |
|
* |
|
* @see http://php.net/manual/function.array-filter.php |
|
* @param callable $callback |
|
* @return array |
|
*/ |
|
public function filter(callable $callback=NULL) |
|
{ |
|
return array_filter($this->original, $callback); |
|
} |
|
} |
|
// End of arr.php
|