map_deep() WP 4.4.0

Застосовує зазначену функцію до значень переданого масиву/об’єкта/рядка/числа. Рекурсивна функція.

Аналог array_walk_recursive() тільки працює чисто з масивами.

1 раз – 0.000031 сек
(дуже швидко) | 50000 разів – 0.17 сек
(дуже швидко)

Хуків немає.

Повертає

Разное. З опрацьованими значеннями.

Використання

map_deep ($ value, $ callback);
$value
(масив/об’єкт/рядок/число) (обов’язковий)
Масив, об’єкт, рядок, число, які потрібно обробити функцією, вказаною в
$callback .
$callback
(callable) (обов’язковий)
Функція якої необхідно обробити значення.

Приклади

0

#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
)
*/
0

#2 Якщо передати рядок у map_deep()

Якщо ми знаємо, що ми отримуємо рядок або інший скаляр, то звичайно можна просто застосувати функцію до рядка.

Але, якщо ми не знаємо заздалегідь, що прийде, то є сенс передати отримане значення map_deep() . В цьому випадку якщо функція отримає рядок, то нічого страшного не станеться – функція її обробить і поверне оброблене значення отриманого рядка:

// myint() функція з минулого прикладу...

// обробимо рядок
$ val = '2 яблука';
echo map_deep( $val, 'myint'); //> 2

список змін

З версії 4.4.0Введено.

Код 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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *