<?php
/**
- * @file src/Util/Arrays.php
- * @author Roland Haeder<https://f.haeder.net/profile/roland>
+ * @copyright Copyright (C) 2010-2022, 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 <https://www.gnu.org/licenses/>.
+ *
*/
+
namespace Friendica\Util;
/**
/**
* Private constructor
*/
- private function __construct () {
+ private function __construct() {
// Utitlities don't have instances
}
* @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 = '';
// 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;
+ }
}