PHP foreach值在关联数组中被替换

时间:2017-10-01 19:59:42

标签: php foreach

你今天过得怎么样? 我不是很好,因为我似乎无法弄明白。我的表格看起来像这样:

<body>
<form action = "opdracht4.7.test.php" method="get">
    Uw naam: <input type="text" name="naam"><br>
    Uw e-mail: <input type="text" name="email"><br>
    <br>
    Bevalt deze website? <input type="radio" name="keuze" value="Ja" checked> Ja
        <input type="radio" name="keuze" value="Nee"> Nee
        <input type="radio" name="keuze" value="Weet niet"> Weet niet <br>
    <br>
    Uw commentaar: <br>
    <textarea name="commentaar"></textarea><br>
    <br>
    <input type="submit" name="submit" value="submit">
</form>

为了处理数据,我有一些函数中的要求:

function check_input($input) {
    $input = htmlspecialchars($input);
    $input = trim($input);
    $input = stripslashes($input);

    return $input;
}

现在我使用$ _GET来获取所有信息:

if(isset($_GET['submit'])) {
    $form = array($_GET['naam'], $_GET['email'], $_GET['keuze'], $_GET['commentaar']);

所以一切正常,现在我使用:

foreach($form as $key => $value) {
        $value = check_input($value);
        echo $key.' is a '.$value."<br>";
    }

但这里出错了。通过$ _GET ['x']的每个值都必须替换为check_input($ value)...但它不起作用。循环中的值已更改,但如果我退出foreach循环,则$ values仍未修剪,也不会进行调整。有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找您的$form数组,但已映射到您的check_input函数:

if(isset($_GET['submit'])) {
    $form = array($_GET['naam'], $_GET['email'], $_GET['keuze'], $_GET['commentaar']);
    $form = array_map('check_input', $form);
}

答案 1 :(得分:0)

这里$ value必须存储在块foreach循环外部定义的数组中,如下所示

$value=array();
$i=0;
foreach($form as $key => $value) {
    $value[$i] = check_input($value);
    echo $key.' is a '.$value[$i]."<br>";
$i++; 
  }
 print_r($value);