在foreach循环中更改foreach $ key变量

时间:2018-02-27 19:36:46

标签: php variables

正在寻找一种方法将$$key更改为类似$$key_error的内容,以便变量在foreach循环之外看起来像:$name_error

这是我到目前为止所做的:

  foreach ($_POST as $key => $value) {
    $$key = strip_tags(mysqli_real_escape_string($mysqli, $value));
     if (empty($value)) {
       // change variable below to something like $$key_error ($$name_error)
       $$key = 'is-invalid';

     } else {
       $$key = "value='$value'";
     }
  }

当输入为空时,用户将返回到注册表单,空的输入将具有红色引导程序边框。当一个字段不为空时,该值仍然存在,因此他们不必全部完成。

<input type="text" name="name" class="form-control form-control-lg <?=$name?>" style="text-align:center;" placeholder="Voor- en achternaam" <?=$name?>>

我希望这一切都有道理:)

1 个答案:

答案 0 :(得分:1)

使用数组。

$errors = [];
$values = [];

foreach ($_POST as $key => $value) {
    // validation check for $value
    if (/*validation check fails*/) {
       $errors[$key] = 'error message specific to this field';
    } else {
        $values[$key] = htmlspecialchars($value);
    }
}

然后在表单中,检查与控件名称匹配的数组键。

<input type="text" name="example"
    class="<?= isset($errors['example']) ? 'is-invalid' : '' ?> other classes"
    value="<?= $values['example'] ?? '' ?>">

如果您愿意,也可以输出特定的错误消息。

<div class="error"><?= $errors['example'] ?? '' ?></div>