JBZoo\Utils\Arr::mapDeep PHP Method

mapDeep() public static method

Returns an array containing all the elements of arr1 after applying the callback function to each one.
public static mapDeep ( array $array, string $callback, boolean $onNoScalar = false ) : array
$array array An array to run through the callback function
$callback string Callback function to run for each element in each array
$onNoScalar boolean Whether or not to call the callback function on nonscalar values (Objects, resources, etc)
return array
    public static function mapDeep(array $array, $callback, $onNoScalar = false)
    {
        foreach ($array as $key => $value) {
            if (is_array($value)) {
                $args = array($value, $callback, $onNoScalar);
                $array[$key] = call_user_func_array(array(__CLASS__, __FUNCTION__), $args);
            } elseif (is_scalar($value) || $onNoScalar) {
                $array[$key] = call_user_func($callback, $value);
            }
        }
        return $array;
    }

Usage Example

Example #1
0
 public function testMapDeep()
 {
     $input = array('<', 'abc', '>', 'def', array('&', 'test', '123'), (object) array('hey', '<>'));
     $expect = array('&lt;', 'abc', '&gt;', 'def', array('&amp;', 'test', '123'), (object) array('hey', '<>'));
     is($expect, Arr::mapDeep($input, 'htmlentities'));
 }