map_deep()
Застосовує зазначену функцію до значень переданого масиву/об’єкта/рядка/числа. Рекурсивна функція.
Аналог array_walk_recursive() тільки працює чисто з масивами.
1 раз – 0.000031 сек
(дуже швидко) | 50000 разів – 0.17 сек
(дуже швидко)
(дуже швидко) | 50000 разів – 0.17 сек
(дуже швидко)
Хуків немає.
Повертає
Разное. З опрацьованими значеннями.
Використання
map_deep ($ value, $ callback);
- $value
(масив/об’єкт/рядок/число) (обов’язковий) - Масив, об’єкт, рядок, число, які потрібно обробити функцією, вказаною в
$callback . - $callback
(callable) (обов’язковий) - Функція якої необхідно обробити значення.
Приклади
#1 Застосування функції на всіх елементах масиву.
// функція очищення
function myint( $val ){
if( $val === 1 )
return 111;
return (int) $val;
}
$ val = array (1, '2 яблука', 'і груша');
$ val = map_deep ($ val, 'myint'); // 111
/*
Array
(
[0] => 111
[1] => 2
[2] => 0
)
*/#2 Якщо передати рядок у map_deep()
Якщо ми знаємо, що ми отримуємо рядок або інший скаляр, то звичайно можна просто застосувати функцію до рядка.
Але, якщо ми не знаємо заздалегідь, що прийде, то є сенс передати отримане значення map_deep() . В цьому випадку якщо функція отримає рядок, то нічого страшного не станеться – функція її обробить і поверне оброблене значення отриманого рядка:
// myint() функція з минулого прикладу... // обробимо рядок $ val = '2 яблука'; echo map_deep( $val, 'myint'); //> 2
список змін
| З версії 4.4.0 | Введено. |
Код map_deep() map deep WP 6.0.2
function map_deep( $value, $callback ) {
if ( is_array( $value ) ) {
foreach ( $value as $index => $item ) {
$ value [$ index] = map_deep ($ item, $ callback);
}
} elseif ( is_object( $value ) ) {
$object_vars = get_object_vars( $value );
foreach ( $object_vars as $property_name => $property_value ) {
$value->$property_name = map_deep( $property_value, $callback );
}
} else {
$ value = call_user_func ($ callback, $ value);
}
return $value;
}