diff --git a/www/composer.json b/www/composer.json index 7e983187..f23af7eb 100644 --- a/www/composer.json +++ b/www/composer.json @@ -15,7 +15,7 @@ ] }, "repositories": { - "git.egplusww.jp.Composer": { + "packages.omnicomproduction.jp.Composer": { "type": "composer", "url": "https://packages.omnicomproduction.jp/api/packages/Composer/composer" } diff --git a/www/lib/CoreLibs/Combined/ArrayHandler.php b/www/lib/CoreLibs/Combined/ArrayHandler.php index d7e789bb..5ecbe43b 100644 --- a/www/lib/CoreLibs/Combined/ArrayHandler.php +++ b/www/lib/CoreLibs/Combined/ArrayHandler.php @@ -811,6 +811,87 @@ class ArrayHandler ); return $in_array; } + + /** + * TODO: move to CoreLibs ArrayCombined + * return one random entry from an array (value) + * the return entry is null if the incoming array is empty + * the array can also be an array of arrays + * + * @param array $array + * @return string|int|float|bool|array|null + */ + public static function getRandomEntryFromArray(array $array): string|int|float|bool|array|null + { + if (empty($array)) { + return null; + } + $random_index = array_rand($array); + return $array[$random_index]; + } + + /** + * TODO: move to CoreLibs ArrayCombined + * find and remove one value + * on default removes only the first entry + * on default does not strict compare + * + * @param array $array + * @param string|int|float|bool|array $value + * @param bool $strict [false] + * @return array + */ + public static function removeArrayEntryByValue( + array $array, + string|int|float|bool|array $value, + bool $strict = false, + ): array { + return array_filter($array, function ($element) use ($value, $strict) { + return $strict ? + $element !== $value : + $element != $value; + }); + } + + /** + * TODO: move to CoreLibs ArrayCombined + * add a string to each element in an array, default is at the end of the value, + * can be switched with the prefix flag + * + * @param array $array + * @param string $string_to_add + * @param bool $prefix [false] + * @return array + */ + public static function addStringToEachValueInArray(array $array, string $string_to_add, bool $prefix = false): array + { + return array_map(function ($value) use ($string_to_add, $prefix) { + return $prefix ? + $string_to_add . $value : + $value . $string_to_add; + }, $array); + } + + /** + * sort by key any array, even if it is nested + * + * @param array $data + * @return array + */ + public static function createSortedArrayByKey(array $data): array + { + // Sort by keys + ksort($data); + + // Recursively sort nested arrays + foreach ($data as $key => $value) { + if (is_array($value)) { + $data[$key] = self::createSortedArrayByKey($value); + } + } + + return $data; + } } // __END__