34 $explodedValues = explode($delimiter, $string);
35 foreach ($explodedValues as &$value) {
39 return $explodedValues;
52 static public function trimExplode($delimiter, $string, $onlyNonEmptyValues = FALSE) {
53 $chunksArr = explode($delimiter, $string);
54 $newChunksArr = array();
55 foreach ($chunksArr as $value) {
56 if ($onlyNonEmptyValues === FALSE || trim($value) !==
'') {
57 $newChunksArr[] = trim($value);
75 static public function arrayMergeRecursiveOverrule(array $firstArray, array $secondArray, $dontAddNewKeys = FALSE, $emptyValuesOverride = TRUE) {
76 foreach ($secondArray as $key => $value) {
77 if (array_key_exists($key, $firstArray) && is_array($firstArray[$key])) {
78 if (is_array($secondArray[$key])) {
79 $firstArray[$key] = self::arrayMergeRecursiveOverrule($firstArray[$key], $secondArray[$key], $dontAddNewKeys, $emptyValuesOverride);
81 $firstArray[$key] = $secondArray[$key];
84 if ($dontAddNewKeys) {
85 if (array_key_exists($key, $firstArray)) {
86 if ($emptyValuesOverride || !empty($value)) {
87 $firstArray[$key] = $value;
91 if ($emptyValuesOverride || !empty($value)) {
92 $firstArray[$key] = $value;
110 $reorderedArray = array();
111 if (count($array) > 1) {
112 $keysInRandomOrder = array_rand($array, count($array));
113 foreach ($keysInRandomOrder as $key) {
114 $reorderedArray[] = $array[$key];
117 $reorderedArray = $array;
119 return $reorderedArray;
130 if (count($array) > 0) {
131 foreach ($array as $value) {
132 if (!isset($previousType)) {
133 $previousType = gettype($value);
134 } elseif ($previousType !== gettype($value)) {
152 static public function array_reduce(array $array, $function, $initial = NULL) {
153 $accumlator = $initial;
154 foreach ($array as $value) {
155 $accumlator = $function($accumlator, $value);
170 if (is_string($path)) {
171 $path = explode(
'.', $path);
172 } elseif (!is_array($path)) {
173 throw new \InvalidArgumentException(
'getValueByPath() expects $path to be string or array, "' . gettype($path) .
'" given.', 1304950007);
175 $key = array_shift($path);
176 if (isset($array[$key])) {
177 if (count($path) > 0) {
178 return is_array($array[$key]) ? self::getValueByPath($array[$key], $path) : NULL;
197 if (!is_array($subject) && !$subject instanceof \ArrayAccess) {
198 throw new \InvalidArgumentException(
'setValueByPath() expects $subject to be array or an object implementing \\ArrayAccess, "' . (is_object($subject) ? get_class($subject) : gettype($subject)) .
'" given.', 1306424308);
200 if (is_string($path)) {
201 $path = explode(
'.', $path);
202 } elseif (!is_array($path)) {
203 throw new \InvalidArgumentException(
'setValueByPath() expects $path to be string or array, "' . gettype($path) .
'" given.', 1305111499);
205 $key = array_shift($path);
206 if (count($path) === 0) {
207 $subject[$key] = $value;
209 if (!isset($subject[$key]) || !is_array($subject[$key])) {
210 $subject[$key] = array();
212 $subject[$key] = self::setValueByPath($subject[$key], $path, $value);
226 if (is_string($path)) {
227 $path = explode(
'.', $path);
228 } elseif (!is_array($path)) {
229 throw new \InvalidArgumentException(
'unsetValueByPath() expects $path to be string or array, "' . gettype($path) .
'" given.', 1305111513);
231 $key = array_shift($path);
232 if (count($path) === 0) {
235 if (!isset($array[$key]) || !is_array($array[$key])) {
238 $array[$key] = self::unsetValueByPath($array[$key], $path);
253 foreach ($array as &$value) {
254 if (is_array($value)) {
255 if (self::sortKeysRecursively($value, $sortFlags) === FALSE) {
260 return ksort($array, $sortFlags);
271 if (!is_object($subject) && !is_array($subject)) {
272 throw new \InvalidArgumentException(
'convertObjectToArray expects either array or object as input, ' . gettype($subject) .
' given.', 1287059709);
274 if (is_object($subject)) {
275 $subject = (array) $subject;
277 foreach ($subject as $key => $value) {
278 if (is_array($value) || is_object($value)) {
279 $subject[$key] = self::convertObjectToArray($value);
293 foreach (
$result as $key => $value) {
294 if (is_array($value)) {
295 $result[$key] = self::removeEmptyElementsRecursively($value);
296 if (
$result[$key] === array()) {
299 } elseif ($value === NULL) {
314 $containsNumericalKeysOnly = TRUE;
315 array_walk($array,
function($value, $key) use (&$containsNumericalKeysOnly) {
316 if (!is_integer($key)) {
317 $containsNumericalKeysOnly = FALSE;
321 if ($containsNumericalKeysOnly === TRUE) {
static sortKeysRecursively(array &$array, $sortFlags=NULL)
static removeEmptyElementsRecursively(array $array)
static randomizeArrayOrder(array $array)
static integerExplode($delimiter, $string)
static trimExplode($delimiter, $string, $onlyNonEmptyValues=FALSE)
static containsMultipleTypes(array $array)
static array_reduce(array $array, $function, $initial=NULL)
if($list_of_literals) if(!empty($literals)) if(!empty($literals)) $result
Analyse literals to prepend the N char to them if their contents aren't numeric.
static arrayMergeRecursiveOverrule(array $firstArray, array $secondArray, $dontAddNewKeys=FALSE, $emptyValuesOverride=TRUE)
static setValueByPath($subject, $path, $value)
static unsetValueByPath(array $array, $path)
static getValueByPath(array &$array, $path)
static sortArrayWithIntegerKeys($array)
static convertObjectToArray($subject)