通过输入字段和php数组+ for循环声明和使用变量


Declare and use variables via input fields and php array + for loop

我做了一个问卷,实际上是一种在线调查。我遇到了关于下面代码的主要问题。不管我怎么努力,我的数组显然没有返回任何东西。我在下面提供了一个完整的代码,如果有人能找到错误,这将是非常有帮助的。结果返回空页。

HTML表单

<form action="process.php" method="post"> 
Title: <br/><input type="text" name="title"><br/><br/> 
Question 1: <br/><textarea name="ask[1]"></textarea><br/>
Question 2: <br/><textarea name="ask[2]"></textarea><br/> 
Question 3: <br/><textarea name="ask[3]"></textarea><br/><br/> 
<input type="submit" name="submit" value="PROCEED"> 
</form> 

<?php
$blah = "";
$title = $_POST['title'];
$ask = array();
for($j=1; $j<4; $j++) {
    $ask[$j] = $_POST['ask$j'];
if($ask[$j] != "") {
    $area = '<textarea name="answers11"></textarea>';
    $addmore = '<button type="button" name="addmore" onClick="addmore('.$j.');">Add more</button>';
    $blah .= $j.'): '.$ask[$j].'<br/>'.$area.'<br/><div id="inner$j"></div>'.$addmore.'<br/><br/>';
}}  
echo $blah;
?>
JAVASCRIPT文件

var am = [];
for(var i=1; i<101; i++){
  am[i] = 1;
}
function addmore(index) {
        am[index]++;
        var textarea = document.createElement("textarea");
        textarea.name = "answers" + index + am[index];
        var div = document.createElement("div");
        div.innerHTML = textarea.outerHTML;
        document.getElementById("inner"+index).appendChild(div);
}

我相信你的问题是如何在PHP中捕获数组。这些线:

for($j=1; $j<4; $j++) {
    $ask[$j] = $_POST['ask$j'];
应:

for($j=1; $j<4; $j++) {
    $ask[$j] = $_POST['ask'][$j];

或者更简单:

$ask = $_POST['ask'];

PHP将转换指定数组的表单元素。

ask[...]将被转换为数组:

$_POST = array(
    'ask' => array(...)
)

您可以通过var_dump查看$_POST数组的行为:var_dump($_POST);

参见HTML元素数组,name="something[]"或名称="something" ?