首页 > 解决方案 > 我无法将输入数据从表单存储到数组中

问题描述

我有一个问题;我正在尝试将用户输入表单的所有信息发送到页面。表单的输入是可变的,具体取决于用户设置的内容。(表格代表用户可以设置的测试)。所以这就是我如何使用表单来处理我的页面:

<form method="post" action="test_voc_fr.php">
    <div class="row">
<?php                   
    $questionNumber = 1; 
    $questionId = 100;

    while($return = $request->fetch()) { 

        if($return['kanji'] == NULL) {
            $return['kanji'] = "--";
        }
?>                  
        <div class="col-md-3">  
            <label for="<?php echo $questionNumber; ?>"><strong><?php echo $return['kanji']." (".$return['hiragana'].") :"; ?></strong></label> 
            <input type="hidden" name="<?php echo $questionId; ?>" id="<?php echo $questionNumber; ?>" value="<?php echo $return['id']; ?>">
            <input type="text" name="<?php echo $questionNumber; ?>" id="<?php echo $questionNumber; ?>">
        </div>                          
<?php                       $questionNumber++;
        $questionId--;
    }

?>                  
    </div>
    <input type="hidden" name="number" value="<?php echo $number ?>"> 
    <input type="submit" value="Voir les résultats">    
</form>

这是另一个页面,我将所有输入都放在一个数组中:

$number = $_POST['number']; 

$testAnswer = array();
$answerId = array();

for($n = 1; $n <= $number; $n++) {
    $testAnswer[$n] = $_POST[$n];
    echo $testAnswer[$n]."<br>";
}



for($n = 100; $n > (100-$number); $n--) {

    $increase = 1;      
    $answerId[$increase] = $_POST[$n];      
    echo $answerId[$increase]."<br>";
    $increase++;
}

第一个数组$testAnswer[]很好,因为所有信息都在里面。但是第二个数组$answerId[]在 index 上只包含一个值[1]。问题是,在for循环内部,该行echo $answerId[$increase]正确显示了所有不同的 id。但是在for循环之外,当我使用 时print_r($answerId),我只有一个值。

我正在学习编码,这是我第一次使用stackoverflow,如果这里有明显的错误,请见谅。

标签: php

解决方案


你在 for 循环中的逻辑是错误的。$increase当您再次进入循环时,您始终设置为 1。$increase将始终是1,因此会覆盖以前的数据。在循环之前设置$increase,在循环外部设置,并在内部增加。

$increase = 1;

for($n = 100; $n > (100-$number); $n--) {

    $answerId[$increase] = $_POST[$n];      
    echo $answerId[$increase]."<br>";
    $increase++;
}

推荐阅读