array_map和htmlentities

Fab*_*geb 3 php arrays html-entities

我一直在使用试图array_map字符为HTML实体转换htmlentities()这样的:

$lang = array_map('htmlentities', $lang);
Run Code Online (Sandbox Code Playgroud)

我的数组看起来像这样:

$lang = array();
$lang['var_char1']['varchar2'] = 'Some Text';
Run Code Online (Sandbox Code Playgroud)

但我一直得到这个错误:

警告:htmlentities()要求参数1为字符串,在第1335行的/home/user/public_html/foo/lang/en.inc.php中给出数组

有谁知道可能是什么问题?谢谢!

Ale*_*rge 30

使用array_walk_recursive.array_map不适用于多维数组:

array_walk_recursive($lang, function (&$value) {
    $value = htmlentities($value);
});
Run Code Online (Sandbox Code Playgroud)


Gau*_*rav 6

因为$ lang是一个二维数组,所以它不起作用

对于二维数组,您需要使用for循环

foreach($$lang as &$l):
    $l = array_map('htmlentities', $l);
}
Run Code Online (Sandbox Code Playgroud)