由于某种原因,我无法设置循环时间,因为我使用jQuery动态生成表单。我已经针对该主题做了一些研究,通常会使用foreach
来循环所有有效字段,但我不知道如何做这些:
<form action="testing.php" method="post" >
<input type="text" name="product[1][name]" value="product1"/>
<input type="text" name="product[1][color][]" value="product1color1"/>
<input type="text" name="product[1][color][]" value="product1color2"/>
<input type="text" name="product[1][color][]" value="product1color3"/>
<input type="text" name="product[2][name]" value="product2"/>
<input type="text" name="product[2][color][]" value="product2color1"/>
<input type="text" name="product[3][name]" value="product3"/>
<input type="text" name="product[3][color][]" value="product3color1"/>
<input type="text" name="product[4][name]" value="product4"/>
<input type="text" name="product[4][color][]" value="product4color1"/>
<input type="submit" />
我的测试代码最终结果如此,它无效。=(
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$product=$_POST['product'];
//store everything that start with product into array
foreach($product as $key){
//loop for product.1 product.2 and so on.....
//echo name of current product
echo $product[$key]['name'];
foreach($product[$key]['color'][] as $point){
echo $point;
}//loop for every single available color field
}//end of product loop
}// end of post request
?>
答案 0 :(得分:1)
语句$product = $_POST['product'];
会将HTML表单中的数据排列成一个多维数组,如下所示:
Array(
1 => Array(
"name" => "product1",
"color" => Array(
0 => "product1color1",
1 => "product1color2",
2 => "product1color3"
)
),
2 => Array(
"name" => "product2",
"color" => Array(
0 => "product2color1"
)
),
...
)
要迭代此数组,您需要执行以下操作:
foreach($product as $key1 => $prd) {
echo $prd['name'];
foreach($prd['color'] as $key2 => $point) {
echo $point;
}
}
在每次传递中,$key1
将包含数组键(1,2,3),而$prd
将包含与该键相关联的项目($product[1]
,$product[2]
,$product[3]
)。如有必要,您可以完全省略$key =>
部分。同样适用于内循环。
答案 1 :(得分:1)
您的代码应该是这样的
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$product=$_POST['product'];
//print_r($_POST['product']);
//store everything that start with product into array
for($i=0; $i<count($product); $i++){
// foreach($product as $key){
//loop for product.1 product.2 and so on.....
echo "<br/> ".$product[$i]['name'];
for($j=0; $j<count($product[$i]['color']); $j++){
// foreach($product[$key]['color'][] as $point){
echo "<br/> ".$product[$i]['color'][$j];
}//loop for every single available color field
}//end of product loop
}// end of post request