2 namespace TYPO3\CMS\Extbase\Utility;
35 $explodedValues = explode($delimiter, $string);
36 foreach ($explodedValues as &$value) {
40 return $explodedValues;
53 public static function trimExplode($delimiter, $string, $onlyNonEmptyValues =
false)
55 $chunksArr = explode($delimiter, $string);
56 $newChunksArr = array();
57 foreach ($chunksArr as $value) {
58 if ($onlyNonEmptyValues ===
false || trim($value) !==
'') {
59 $newChunksArr[] = trim($value);
77 public static function arrayMergeRecursiveOverrule(array $firstArray, array $secondArray, $dontAddNewKeys =
false, $emptyValuesOverride =
true)
79 foreach ($secondArray as $key => $value) {
80 if (array_key_exists($key, $firstArray) && is_array($firstArray[$key])) {
81 if (is_array($secondArray[$key])) {
82 $firstArray[$key] = self::arrayMergeRecursiveOverrule($firstArray[$key], $secondArray[$key], $dontAddNewKeys, $emptyValuesOverride);
84 $firstArray[$key] = $secondArray[$key];
87 if ($dontAddNewKeys) {
88 if (array_key_exists($key, $firstArray)) {
89 if ($emptyValuesOverride || !empty($value)) {
90 $firstArray[$key] = $value;
94 if ($emptyValuesOverride || !empty($value)) {
95 $firstArray[$key] = $value;
114 $reorderedArray = array();
115 if (count($array) > 1) {
116 $keysInRandomOrder = array_rand($array, count($array));
117 foreach ($keysInRandomOrder as $key) {
118 $reorderedArray[] = $array[$key];
121 $reorderedArray = $array;
123 return $reorderedArray;
135 if (!empty($array)) {
136 foreach ($array as $value) {
137 if (!isset($previousType)) {
138 $previousType = gettype($value);
139 }
elseif ($previousType !== gettype($value)) {
157 public static function array_reduce(array $array, $function, $initial = null)
159 $accumlator = $initial;
160 foreach ($array as $value) {
161 $accumlator = $function($accumlator, $value);
177 if (is_string($path)) {
178 $path = explode(
'.', $path);
179 }
elseif (!is_array($path)) {
180 throw new \InvalidArgumentException(
'getValueByPath() expects $path to be string or array, "' . gettype($path) .
'" given.', 1304950007);
182 $key = array_shift($path);
183 if (isset($array[$key])) {
185 return is_array($array[$key]) ? self::getValueByPath($array[$key], $path) : null;
204 if (!is_array($subject) && !$subject instanceof \ArrayAccess) {
205 throw new \InvalidArgumentException(
'setValueByPath() expects $subject to be array or an object implementing \\ArrayAccess, "' . (is_object($subject) ? get_class($subject) : gettype($subject)) .
'" given.', 1306424308);
207 if (is_string($path)) {
208 $path = explode(
'.', $path);
209 }
elseif (!is_array($path)) {
210 throw new \InvalidArgumentException(
'setValueByPath() expects $path to be string or array, "' . gettype($path) .
'" given.', 1305111499);
212 $key = array_shift($path);
214 $subject[$key] = $value;
216 if (!isset($subject[$key]) || !is_array($subject[$key])) {
217 $subject[$key] = array();
219 $subject[$key] = self::setValueByPath($subject[$key], $path, $value);
234 if (is_string($path)) {
235 $path = explode(
'.', $path);
236 }
elseif (!is_array($path)) {
237 throw new \InvalidArgumentException(
'unsetValueByPath() expects $path to be string or array, "' . gettype($path) .
'" given.', 1305111513);
239 $key = array_shift($path);
243 if (!isset($array[$key]) || !is_array($array[$key])) {
246 $array[$key] = self::unsetValueByPath($array[$key], $path);
262 foreach ($array as &$value) {
263 if (is_array($value)) {
264 if (self::sortKeysRecursively($value, $sortFlags) ===
false) {
269 return ksort($array, $sortFlags);
281 if (!is_object($subject) && !is_array($subject)) {
282 throw new \InvalidArgumentException(
'convertObjectToArray expects either array or object as input, ' . gettype($subject) .
' given.', 1287059709);
284 if (is_object($subject)) {
285 $subject = (array)$subject;
287 foreach ($subject as $key => $value) {
288 if (is_array($value) || is_object($value)) {
289 $subject[$key] = self::convertObjectToArray($value);
304 foreach ($result as $key => $value) {
305 if (is_array($value)) {
306 $result[$key] = self::removeEmptyElementsRecursively($value);
307 if ($result[$key] === array()) {
308 unset($result[$key]);
310 }
elseif ($value === null) {
311 unset($result[$key]);
326 $containsNumericalKeysOnly =
true;
327 array_walk($array,
function ($value, $key) use (&$containsNumericalKeysOnly) {
328 if (!is_integer($key)) {
329 $containsNumericalKeysOnly =
false;
333 if ($containsNumericalKeysOnly ===
true) {