@denism300

Почему array_map и sanitize_text_field удаляют вложенный массив?

К примеру, на входе есть массив $_POST['my_meta_fields']
Array
(
    [geomapx] => 55.669412
    [geomapy] => 37.581101
    [city] => Moscow
    [subStation] => Array
        (
            [0] => 143
            [1] => 158
            [2] => 201
        )

    [address] => город Москва, Севастопольский проспект, 24к1
)

если его обработать с помощью
$arr = array_map('sanitize_text_field', $_POST['my_meta_fields']);

то на выходе получается
Array
(
    [geomapx] => 55.669412
    [geomapy] => 37.581101
    [city] => Moscow
    [subStation] => 
    [address] => город Москва, Севастопольский проспект, 24к1
)

т.е., элемент subStation, содержащий массив, стал пустым.
как исправить?
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
@denism300 Автор вопроса
в общем, сделал очистку с помощью рекурсивной функции
function wp_clean($var)
{
	if (is_array($var)) {
		return array_map('wp_clean', $var);
	} else {
		return is_scalar($var) ? sanitize_text_field($var) : $var;
	}
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Потому что надо выкинуть на помойку бессмысленную функцию sanitize_text_field и забыть о её существовании.

Ну и на досуге почитать в документации, что array_map работает с одномерными массивами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы