Spaces:
No application file
No application file
| namespace Mautic\CoreBundle\Helper; | |
| /** | |
| * Helper functions for simpler operations with arrays. | |
| */ | |
| class ArrayHelper | |
| { | |
| /** | |
| * If the $key exists in the $origin array then it will return its value. | |
| * | |
| * @param mixed $key | |
| * @param mixed $defaultValue | |
| * | |
| * @return mixed | |
| */ | |
| public static function getValue($key, array $origin, $defaultValue = null) | |
| { | |
| return array_key_exists($key, $origin) ? $origin[$key] : $defaultValue; | |
| } | |
| /** | |
| * If the $key exists in the $origin array then it will return its value | |
| * and unsets the $key from the $array. | |
| * | |
| * @param mixed $key | |
| * @param mixed $defaultValue | |
| * | |
| * @return mixed | |
| */ | |
| public static function pickValue($key, array &$origin, $defaultValue = null) | |
| { | |
| $value = self::getValue($key, $origin, $defaultValue); | |
| unset($origin[$key]); | |
| return $value; | |
| } | |
| /** | |
| * Selects keys defined in the $keys array and returns array that contains only those. | |
| */ | |
| public static function select(array $keys, array $origin): array | |
| { | |
| return array_filter($origin, fn ($value, $key): bool => in_array($key, $keys, true), ARRAY_FILTER_USE_BOTH); | |
| } | |
| /** | |
| * Sum between two array. | |
| * | |
| * @param mixed[] $a1 | |
| * @param mixed[] $b2 | |
| * | |
| * @return mixed[] | |
| */ | |
| public static function sum(array $a1, array $b2): array | |
| { | |
| return self::sumOrSub($a1, $b2); | |
| } | |
| /** | |
| * SUBSTRACT between two array. | |
| */ | |
| public static function sub(array $a1, array $b2): array | |
| { | |
| return self::sumOrSub($a1, $b2, true); | |
| } | |
| /** | |
| * Removes null and empty string values from the array. | |
| * | |
| * @param mixed[] $array | |
| * | |
| * @return mixed[] | |
| */ | |
| public static function removeEmptyValues(array $array): array | |
| { | |
| return array_filter( | |
| $array, | |
| fn ($value): bool => !is_null($value) && '' !== $value | |
| ); | |
| } | |
| /** | |
| * Flip array or sub arrays. | |
| * | |
| * @param array<int|string|array<int|string>> $masterArrays | |
| * | |
| * @return array<int|string|array<int|string>> | |
| */ | |
| public static function flipArray(array $masterArrays): array | |
| { | |
| if (!is_array(end($masterArrays))) { | |
| return array_flip($masterArrays); | |
| } | |
| return array_map( | |
| fn (array $subArray) => array_flip($subArray), | |
| $masterArrays | |
| ); | |
| } | |
| /** | |
| * @param array<mixed> $multidimensionalArray | |
| * | |
| * @return array<mixed> | |
| */ | |
| public static function flatten(array $multidimensionalArray): array | |
| { | |
| $flattenedArray = []; | |
| array_walk_recursive( | |
| $multidimensionalArray, | |
| function ($value, $key) use (&$flattenedArray): void { | |
| $flattenedArray[$key] = $value; | |
| } | |
| ); | |
| return $flattenedArray; | |
| } | |
| /** | |
| * SUM/SUBSTRACT between two arrays. | |
| * | |
| * @param bool $subtracted | |
| */ | |
| private static function sumOrSub(array $a1, array $b2, $subtracted = false): array | |
| { | |
| return array_map(function ($x, $y) use ($subtracted) { | |
| if ($subtracted) { | |
| return $x - $y; | |
| } else { | |
| return $x + $y; | |
| } | |
| }, $a1, $b2); | |
| } | |
| } | |