diff options
Diffstat (limited to 'inc/arrayutil.inc.php')
-rw-r--r-- | inc/arrayutil.inc.php | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/inc/arrayutil.inc.php b/inc/arrayutil.inc.php new file mode 100644 index 00000000..3d93d7d5 --- /dev/null +++ b/inc/arrayutil.inc.php @@ -0,0 +1,83 @@ +<?php + +declare(strict_types=1); + +class ArrayUtil +{ + + /** + * Take an array of arrays, take given key from each sub-array and return + * new array with just those corresponding values. + */ + public static function flattenByKey(array $list, string $key): array + { + return array_column($list, $key); + } + + /** + * Pass an array of arrays you want to merge. The keys of the outer array will become + * the inner keys of the resulting array, and vice versa. + */ + public static function mergeByKey(array $arrays): array + { + $empty = array_combine(array_keys($arrays), array_fill(0, count($arrays), false)); + $out = []; + foreach ($arrays as $subkey => $array) { + foreach ($array as $key => $item) { + if (!isset($out[$key])) { + $out[$key] = $empty; + } + $out[$key][$subkey] = $item; + } + } + return $out; + } + + /** + * Sort array by given column. + */ + public static function sortByColumn(array &$array, string $column, int $sortOrder = SORT_ASC, int $sortFlags = SORT_REGULAR): void + { + $sorter = array_column($array, $column); + array_multisort($sorter, $sortOrder, $sortFlags, $array); + } + + /** + * Check whether $array contains all keys given in $keyList + * + * @param array $array An array + * @param array $keyList A list of strings which must all be valid keys in $array + */ + public static function hasAllKeys(array $array, array $keyList): bool + { + foreach ($keyList as $key) { + if (!isset($array[$key])) + return false; + } + return true; + } + + /** + * Check if all elements in given array are primitive types, + * i.e. not object, array or resource. + */ + public static function isOnlyPrimitiveTypes(array $array): bool + { + foreach ($array as $item) { + if (is_array($item) || is_object($item) || is_resource($item)) + return false; + } + return true; + } + + /** + * Force each element of given array to be of type $type. + */ + public static function forceType(array &$array, string $type): void + { + foreach ($array as &$elem) { + settype($elem, $type); + } + } + +}
\ No newline at end of file |