我正在处理一些似乎被卡住的代码......任何人都可以修复正确的源代码来循环数组表单吗?
<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"> 
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,所以任何人都可以帮助我吗?
答案 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[]"> 
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[]"> 
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>