Spaces:
No application file
No application file
File size: 3,354 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
<?php
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);
}
}
|