array_walk_recursive 当我使用函数 htmlspecialchars 时无法工作?
array_walk_recursive can't work when I use function htmlspecialchars?
我使用 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!
如果您愿意,当然可以定义一个单独的函数。
在array_walk_recursive的定义中:
array_walk_recursive — Apply a user function recursively to every
member of an array
因此您需要创建一个使用 htmlspecialchars 的用户定义函数,如下所示:
$new[] = "<a href='test'>Test</a><li><div>";
array_walk_recursive($new, "specialChars");
var_dump($new);
function specialChars(&$value) {
$value = htmlspecialchars($value);
}
这将打印:
array (size=1)
0 => string '<a href='test'>Test</a><li><div>' (length=56)
我使用 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!
如果您愿意,当然可以定义一个单独的函数。
在array_walk_recursive的定义中:
array_walk_recursive — Apply a user function recursively to every member of an array
因此您需要创建一个使用 htmlspecialchars 的用户定义函数,如下所示:
$new[] = "<a href='test'>Test</a><li><div>";
array_walk_recursive($new, "specialChars");
var_dump($new);
function specialChars(&$value) {
$value = htmlspecialchars($value);
}
这将打印:
array (size=1)
0 => string '<a href='test'>Test</a><li><div>' (length=56)