使用相同foreach的多个数组

时间:2014-07-08 11:20:17

标签: php arrays forms foreach

让我们从表格布局开始,如下所示:

Item No.          [Store 1]      [Store 2]    [Store 3]
[   x1   ]         [  3   ]       [  2   ]     [  5   ]
[   x2   ]         [  0   ]       [  5   ]     [  1   ]

请注意这个[ ]表示为输入文本字段。

现在每个文本字段的名称都设置为array

$n= array();
$item = array();
$s = array();

项目编号

echo "<input type='text' value='".$row['item_no']."' name='item[]' readonly='readonly' />";

商店1,2和3

echo "<input type='text' value='".$row['short']."' name='s[]' readonly='readonly' />";

每个商店下方的字段

echo "<input type='text' value='' name='n[]' />";

我希望它清楚,因为你可以看到有3 arrays被发现。现在,当我将此表单提交到下一页时......

if(isset($_POST['n']) && isset($_POST['s']) && isset($_POST['item'])){
if(is_array($_POST['n']) && is_array($_POST['s']) && is_array($_POST['item'])) {


foreach( $_POST['n'] as $index => $nqty) {
echo 'QTY = '.$nqty . ' STORE = ' . $_POST['s'][$index]."<br />"; 
//End of Foreach loop
}

}}

上面代码的输出如下所示:

QTY = 3 STORE = store 1
QTY = 2 STORE = store 2
QTY = 5 STORE = store 3
QTY = 0 STORE = store 1
QTY = 5 STORE = store 2
QTY = 1 STORE = store 3

我现在想要的是我应该如何或在哪里放置物品。上面代码中的数组..换句话说,我希望输出完全像这样:

QTY = 3 STORE = store 1 Item No. = x1
QTY = 2 STORE = store 2 Item No. = x1
QTY = 5 STORE = store 3 Item No. = x1
QTY = 0 STORE = store 1 Item No. = x2
QTY = 5 STORE = store 2 Item No. = x2
QTY = 1 STORE = store 3 Item No. = x2

有可能吗?如果不是这样做的另一种方式。

请帮助,我完全坚持这个项目。




回复@ user3702775

我测试了您的代码,更改了s[][]n[][]的名称,其输出如下所示:

QTY = 3 STORE = store 1 Item No. - x1
QTY = 2 STORE = store 2 Item No. - x2 

它甚至错过了商店3和下一行。

商店1,2和3

echo "<input type='text' value='".$row['short']."' name='s[][]' readonly='readonly' />";

每个商店下方的字段

echo "<input type='text' value='' name='n[][]' />";

foreach代码:

foreach( $_POST['item'] as $key=>$value){
  foreach( $_POST['n'][$key] as $index => $nqty) {
    echo 'QTY = '.$nqty . ' STORE = ' . $_POST['s'][$key][$index]." Item No. - ".$value."<Br />"; 
    //End of Foreach loop
  }
}



解决了:

更改以下输入文本字段的名称,如下所示:

项目编号

echo "<input type='text' value='".$row['item_no']."' name='item[$j]' readonly='readonly' />";

商店1,2和3

echo "<input type='text' value='".$row['short']."' name='s[$j][]' readonly='readonly' />";

每个商店下方的字段

echo "<input type='text' value='' name='n[$j][]' />";

然后在代码开头

分配$j=0;

并将$j++;放在最后

然后在提交页面:

foreach( $_POST['item'] as $key=>$value){

  foreach( $_POST['n'][$key] as $index => $nqty) {

    echo 'QTY = '.$nqty . ' STORE = ' . $_POST['s'][$key][$index]." Item No. - ".$value."<Br />"; 
    //End of Foreach loop
  }

}

感谢@ user3702775

1 个答案:

答案 0 :(得分:3)

将商店和字段数组设为s [] []和n [] [],并为每个项目设置第一个索引。

E.g。 - 对于第一项,商店和字段名称将为s [0] []和n [0] [],依此类推。

然后提交你的循环之后会像 -

foreach( $_POST['item'] as $key=>$value){
  foreach( $_POST['n'][$key] as $index => $nqty) {
    echo 'QTY = '.$nqty . ' STORE = ' . $_POST['s'][$key][$index]." Item No. - ".$value."<br /> "; 
    //End of Foreach loop
  }
}