用表格循环数组

时间:2016-08-31 22:05:28

标签: php html arrays

我正在处理一些似乎被卡住的代码......任何人都可以修复正确的源代码来循环数组表单吗?

<pre>
<form action='' method='POST'>
<input type='text' name='jml'>
<input type='submit' name='submit'>
</form>

<form action='' method='POST'>
<?php
if(isset($_POST['jml'])){
    $jml = $_POST['jml'];
    for($i=0;$i<$jml;++$i){
?>
    Stuff Name <input type="text" name="name">&nbsp
    Stuff Price <input type='text' name='price'><br>
    <br>
<?php
}
echo "<input type='submit' name='submit2'>";
echo "</form>";
}
if(isset($_POST['submit2'])){
    $name[] = $_POST['name'];
    $price[] = $_POST['price'];
    global $jml;
    for($i=0;$i<$jml;++$i){
        echo $name.' '.$price.'<br>';
    }
}
?>
</pre>

我是C ++的基础,它很容易循环,但我仍然需要学习这个php,所以任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

首先需要做的是,如果您需要多个行字段,请在文本字段的名称属性中添加[]。例如:

<input type="text" name="name[]">

这又将接受同名的多个文本输入,将其转换为数组。

接下来,由于您依赖$jml = $_POST['jml'];生成的字段数量,因此第一次请求时就可以使用此字段。在下次提交时,这将消失。不要使用global没有意义的内容,只需使用提交的文本字段的count即可。

$name = $_POST['name'];
$price = $_POST['price'];
$count = count($name); // get count

请注意,这完全依赖于所有字段的表单。

之后,它只是基本数组指向。 echo $name[$i]

修订代码:

<pre>
<form action='' method='POST'>
<input type='text' name='jml'>
<input type='submit' name='submit'>
</form>

<form action='' method='POST'>
<?php
if(isset($_POST['jml'])){
    $jml = $_POST['jml'];
    for($i=0;$i<$jml;++$i){
?>
    Stuff Name <input type="text" name="name[]">&nbsp
    Stuff Price <input type='text' name='price[]'><br>
    <br>
<?php
}
echo "<input type='submit' name='submit2'>";
echo "</form>";
}
if(isset($_POST['submit2'])){
    $name = $_POST['name'];
    $price = $_POST['price'];
    $count = count($name);
    for($i=0;$i<$count;++$i){
        echo $name[$i].' '.$price[$i].'<br>';
    }
}
?>
</pre>

答案 1 :(得分:0)

使用Task.FromResult(MyMethodAsync())循环这是您可以轻松遍历数组的方法:

foreach

答案 2 :(得分:-1)

检查

  

此处的工作代码http://main.xfiddle.com/7ffb488b/stackoverflow/Loopanarraywithform.php

<pre>
    <?php
if(isset($_POST['submit'])){
    echo "<form action='' method='POST'>";
    $jml = intval($_POST['jml']);
    for($i=0;$i<$jml;++$i){
?>
    Stuff Name <input type="text" name="name[]">&nbsp
    Stuff Price <input type='text' name='price[]'><br>
    <br>
<?php
}
echo "<input type='submit' name='submit2'>";
echo "</form>";
}elseif(isset($_POST['submit2'])){  
    $name = $_POST['name'];
    $price = $_POST['price'];
    //   global $jml;
    $i=0;
    foreach ($name as $key => $value) {
        echo $value.' '.$price[$key].'<br/>';
        $i++;
    }
}else{?>

<form action='' method='POST'>
<input type='text' name='jml'>
<input type='submit' name='submit'>
</form>
    <?php
     }
?>
</pre>