我使用 array_walk_recursive 将 htmlspecialchars 应用于我的数组值,但它不起作用,当我手动使用它时 htmlspecialchars 起作用; 这是我的代码:
$new[] = "<a href='test'>Test</a><li><div>";
var_dump(array_walk_recursive($new,'htmlspecialchars')); // true
var_dump($new) ; // no change
最佳答案
这是因为原始数组不会被修改,除非你自己在回调函数中修改它。
你的回调函数基本上是:
function($item, $key) {
htmlspecialchars($item);
}
因此,在调用该函数时,不会存储任何内容,并且原始数组也不会更改。
如果要修改函数中的值,可以通过引用传递:
function(&$item, $key) {
$item = htmlspecialchars($item);
}
所以结果看起来像:
$new[] = "<a href='test'>Test</a><li><div>";
array_walk_recursive($new, function(&$item, $key) {
$item = htmlspecialchars($item);
});
var_dump($new) ; // change!
如果您愿意,当然可以定义一个单独的函数。
关于php - 当我使用函数 htmlspecialchars 时,array_walk_recursive 无法工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37982358/