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) |
Результат | 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;
}
public function testMapDeep() { $input = array('<', 'abc', '>', 'def', array('&', 'test', '123'), (object) array('hey', '<>')); $expect = array('<', 'abc', '>', 'def', array('&', 'test', '123'), (object) array('hey', '<>')); is($expect, Arr::mapDeep($input, 'htmlentities')); }