PHP 数组和 htmlentities

PHP array and htmlentities

$_POST=

Array ( [0] => aaa@gmail.com [1] => bbb [2] => ccc [3] => ddd [4] => eee [5] => fff [6] => ggg [7] => hhh [8] => iii [9] => jjj [10] => 31 [11] => k )

foreach($_POST as $key => $val){
    for ($key = 0; $key <= 9;$key++){
        $_POST2[$val] = htmlentities($_POST[$val]);
    }
}
}

这是我的代码,我想做的是将 $_POST 数组拆分为 $key$val。然后我想告诉程序,当 $key 上升 1 时,将 htmlentities() 放在 $val 周围。 你能帮我么?我已经坚持了几个小时。

你这样做是错误的。尝试 -

foreach($_POST as $key => $val){
    $_POST2[] = htmlentities([$val]);
}

不需要 for 循环。 foreach 将包装所有值。如果您希望 keys 与 $_POST 相同,则将其留空。




更新 18.11.2019


事实上,如果您处理的是关联数组,例如 _POST(与索引数组相反),其中您处理的是有名称的键,而不是数字,那么您必须编写如下代码:

// this is the classic orthodox syntax 
foreach($_POST as $key => $val){
  $_POST[$key] = htmlentities($val);
}

如果想像我朋友在上面建议的那样省略 $key 它会起作用,但你最终会得到一个同时关联和索引的组合数组(使用双内存并极大地减慢你的脚本)。更重要的是它不会改变关联部分,它会产生并追加由 htmlentities.

修改的索引数组
// appends a indexed array
foreach($_POST as $key => $val){
  $_POST[] = htmlentities($val);
}

// The & in front of $val permits me to modify the value of $val
// inside foreach, without appending a indexed array:

foreach($_POST as &$val){
  $val = htmlentities($val);
}

如果您使用索引数组,您总是可以将 $key 排除在外,但也请注意它是 htmlentities($val) 而不是 htmlentities([$val])