summaryrefslogtreecommitdiffstats
path: root/inc/arrayutil.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'inc/arrayutil.inc.php')
-rw-r--r--inc/arrayutil.inc.php66
1 files changed, 52 insertions, 14 deletions
diff --git a/inc/arrayutil.inc.php b/inc/arrayutil.inc.php
index 490b5a4f..3d93d7d5 100644
--- a/inc/arrayutil.inc.php
+++ b/inc/arrayutil.inc.php
@@ -1,33 +1,24 @@
<?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.
- * @param array $list
- * @param string $key
- * @return array
*/
- public static function flattenByKey(array $list, string $key)
+ public static function flattenByKey(array $list, string $key): array
{
- $ret = [];
- foreach ($list as $item) {
- if (array_key_exists($key, $item)) {
- $ret[] = $item[$key];
- }
- }
- return $ret;
+ 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.
- * @param array $arrays
- * @return array
*/
- public static function mergeByKey(array $arrays)
+ public static function mergeByKey(array $arrays): array
{
$empty = array_combine(array_keys($arrays), array_fill(0, count($arrays), false));
$out = [];
@@ -42,4 +33,51 @@ class ArrayUtil
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