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; }