Php 带有if(isset)的Foreach循环不';行不通

Php 带有if(isset)的Foreach循环不';行不通,php,foreach,Php,Foreach,我制作了一个register.php-page,而不是编写: if(isset($_POST['username'])) { $username = mysqli_escape_string($mysqli, $_POST['username']); } else { $username = ''; } 多次(一次用于用户名、birtday等),我尝试将(尚未设置)变量/字符串存储在数组中: $array = array('email', 'username', 'birth'

我制作了一个register.php-page,而不是编写:

if(isset($_POST['username'])) {
    $username = mysqli_escape_string($mysqli, $_POST['username']);
} else {
    $username = '';
}
多次(一次用于用户名、birtday等),我尝试将(尚未设置)变量/字符串存储在数组中:

$array = array('email', 'username', 'birth')
然后执行foreach循环:

foreach ($array as $var) {
    if(isset($_POST['$var'])) {
    ${$var} = mysqli_escape_string($mysqli, $_POST['$var']);
    } else {
        ${$var} = '';
    }
}

我不知道我做错了什么,不知道这是否是正确的方法(猜测${$var}是错的)。有什么问题,应该如何解决?:(

变量扩展不会通过
'
文本进行--请将变量用双引号括起来,或者完全跳过引号:

if(isset($_POST[$var])) {
//or
if(isset($_POST["$var"])) {

变量扩展不会通过
文本进行--请将变量用双引号括起来或完全跳过引号:

if(isset($_POST[$var])) {
//or
if(isset($_POST["$var"])) {

isset($\u POST['$var'])
应该是
isset($\u POST[$var])
isset($\u POST['$var'])
应该是
isset($\u POST[$var])

除了“$var”之外,还应该使用数组来存储转义输入,而不是直接从输入中声明变量。通过这样做,很容易意外地引入安全问题。

除了“$var”之外,还应该使用数组来存储转义输入,而不是直接从输入声明变量。按您现在的方式声明变量,很容易意外引入安全问题。

为什么要使用“”

为什么要使用“”


isset($\u POST['$var'])
被视为一个字符串,您需要使用
isset($\u POST[“$var”]]
了解字符串
'$var'
$var
中的字符串之间的差异,将$\u POST中的“$var”更改为$var,将${$var}更改为$$var。这可能会解决您的问题。试试。
isset($\u POST[$var'])
被视为一个字符串,您需要使用
isset($\u POST[“$var”]]
了解字符串
'$var'
$var
中的字符串之间的区别,在$\u POST和${$var}中将'$var'更改为$var'到$$var。这可能会解决您的问题。尝试一下。谢谢您的建议!谢谢您的建议!您是对的。不过用法很奇怪。可能应该将整个内容包装在一个函数中,如
getPost($key)
返回一个空字符串或值。你是对的。不过用法很奇怪。可能应该将整个过程封装在一个函数中,比如
getPost($key)
返回一个空字符串或值。我认为我需要,或者这不重要。刚刚学习了PHP btw:)我认为我需要,或者这没关系。只是学习了PHP顺便说一句:)