X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FUtil%2FArrays.php;h=1d96be05125ead41e8bb7f0d28570f4bc74d9a3b;hb=2b3c1972db987ee2396e528476739f4cec4e8972;hp=f4f53245dad63acbb91e046baf7619ff188d1f53;hpb=0a4119adaf6294bf43d135a0f435c1dd677c50e0;p=friendica.git diff --git a/src/Util/Arrays.php b/src/Util/Arrays.php index f4f53245da..1d96be0512 100644 --- a/src/Util/Arrays.php +++ b/src/Util/Arrays.php @@ -1,8 +1,24 @@ + * @copyright Copyright (C) 2010-2023, the Friendica project + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * */ + namespace Friendica\Util; /** @@ -13,18 +29,18 @@ class Arrays /** * Private constructor */ - private function __construct () { - // Utitlities don't have instances + private function __construct() { + // Utilities don't have instances } /** - * @briefs Implodes recursively a multi-dimensional array where a normal implode() will fail. + * Implodes recursively a multi-dimensional array where a normal implode() will fail. * * @param array $array Array to implode * @param string $glue Glue for imploded elements * @return string String with elements from array */ - public static function recursiveImplode (array $array, $glue) { + public static function recursiveImplode(array $array, $glue) { // Init returned string $string = ''; @@ -46,4 +62,32 @@ class Arrays // Return it return $string; } + + /** + * walks recursively through an array with the possibility to change value and key + * + * @param array $array The array to walk through + * @param callable $callback The callback function + * + * @return array the transformed array + */ + public static function walkRecursive(array &$array, callable $callback) + { + $new_array = []; + + foreach ($array as $k => $v) { + if (is_array($v)) { + if ($callback($v, $k)) { + $new_array[$k] = self::walkRecursive($v, $callback); + } + } else { + if ($callback($v, $k)) { + $new_array[$k] = $v; + } + } + } + $array = $new_array; + + return $array; + } }