在数组上应用ENT_QUOTES html实体


Applying htmlentities ENT_QUOTES on array

我有一个数组$fields:

Array
(
    [NAME] => M'y Na'me
)

我想将这些撇号转换为实体。当我运行时:

array_map('htmlentities', &$fields, array_fill(0 , count($fields) , ENT_QUOTES) );

然后print_r $fields似乎什么都没有改变?

Array
(
    [NAME] => M'y Na'me
)

如何在$fields中的所有元素上应用带有ENT_QUOTES的 html实体?

编辑:这让我丢失了钥匙

$fields = array_map('htmlentities', $fields, array_fill(0 , count($fields) , ENT_QUOTES) );

根据文档,array_map返回一个新数组,并且不会修改就地传递的数组。

$fields = array_map(
    'htmlentities', &$fields,
    array_fill(0 , count($fields) , ENT_QUOTES)
);

根据评论编辑 -

由于这是PHP,我想最好的方法是放弃函数式路线,以老式的方式进行:

foreach($fields as $key => $value) {
    $fields[$key] = htmlentities($value, ENT_QUOTES);
}
array_map不会

修改数组,即使您将其作为引用传递也是如此。
请改用$fields = array_map('htmlentities', $fields, ...)