Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php array_walk_recursive将函数应用于每个根本不工作的数组元素_Php - Fatal编程技术网

Php array_walk_recursive将函数应用于每个根本不工作的数组元素

Php array_walk_recursive将函数应用于每个根本不工作的数组元素,php,Php,我在表单页面上有以下代码: array_walk_recursive($_POST, 'sanitize'); 它的使用是为了在用户提交表单后,我可以在每个表单字段内回显$\u POST变量 以下是消毒功能: function sanitize ($v) { return htmlspecialchars(trim($v), ENT_QUOTES); } function sanitize(&$item, $key) { $item = htmlspecialchar

我在表单页面上有以下代码:

array_walk_recursive($_POST, 'sanitize');
它的使用是为了在用户提交表单后,我可以在每个表单字段内回显$\u POST变量

以下是
消毒功能:

function sanitize ($v) {
    return htmlspecialchars(trim($v), ENT_QUOTES);
}
function sanitize(&$item, $key) {
    $item = htmlspecialchars(trim($item), ENT_QUOTES);
}
它根本不起作用。$\u POST数组仍然包含有害的引号,当我为值输入类似“'>break”的内容时,这些引号会打断页面上的表单元素


任何帮助都将不胜感激。

array\u walk\u recursive
返回一个布尔值。您的函数不应返回经过santized的输出,而应简单地操作输入。此外,您可能需要将输入声明为引用

尝试对
清理功能进行以下更改:

function sanitize ($v) {
    return htmlspecialchars(trim($v), ENT_QUOTES);
}
function sanitize(&$item, $key) {
    $item = htmlspecialchars(trim($item), ENT_QUOTES);
}
以下是我使用的解决方案(感谢aldrin27的评论):


你可以使用参考资料

array_walk_recursive($_POST,  function(&$v) {
        $v = sanitize($v);
});

为什么不使用
array\u map
?发布你的数组结构很好的答案,让我能够理解这个问题。我最终使用了
array\u map
。它不会递归地执行。