blob: 7aded4db0d76243434058bc314e31c57d4c4861b (
plain) (
tree)
|
|
<?php
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;
}
}
|