如何将多个数组合并为一个?

时间:2016-06-03 15:01:46

标签: php html sql arrays

当我在页面上回显多个订单并提交时,问题就出现了。这是我的表格:

<input name="checkOrder['.($row['ord_no']).'][ord_no]" value="'.($row['ord_no']).'" type="checkbox" class="checkOrder" id="checkOrder">
      <input type="hidden" name="checkOrder['.($row['ord_no']).'][item_seq_no]" value="'.$line_number.'" />
      <input type="hidden" name="checkOrder['.($row['ord_no']).'][item_no]" value="'.$item_number.'" /> 
      <input type="hidden" name="checkOrder['.($row['ord_no']).'][item_desc_1]" value="'.$item_description.'" /></input>

现在我的输出就是:

Array ( [ord_no] => 1000007 [item_seq_no] => 1 [item_no] => 001 [item_desc_1] => item1 ) 
    Array ( [ord_no] => 1000008 [item_seq_no] => 1 [item_no] => 002 [item_desc_1] => item2 ) 
    Array ( [ord_no] => 1000000 [item_seq_no] => 1 [item_no] => 003 [item_desc_1] => item3 ) 
    Array ( [ord_no] => 1000001 [item_seq_no] => 1 [item_no] => 001 [item_desc_1] => item1 )

我更喜欢这个:

[checkOrder] => Array
(
        [ord_no] => 1000007
        (
            [item_seq_no] => 1 [item_no] => 001 [item_desc_1] => item1
        )
        [ord_no] => 1000008
        (
            [item_seq_no] => 1 [item_no] => 002 [item_desc_1] => item2
        )
        [ord_no] => 1000000
        (
            [item_seq_no] => 1 [item_no] => 003 [item_desc_1] => item3
        )
        [ord_no] => 1000001
        (
        [item_seq_no] => 1 [item_no] => 001 [item_desc_1] => item1
        )
)

那么如何更改我的表单以创建一个大数组而不是多个数组,或者我没有正确考虑这个问题。现在我将所有这些被检入到foreach循环内的表中。然后在我的foreach之外发送一封电子邮件。它只是将第一个数组顺序#插入电子邮件中。当我真的需要每个被检查的人。我相信我想到的其他阵列会解决我的问题。如果您想了解更多信息,请告诉我们。

1 个答案:

答案 0 :(得分:0)

将表单更改为:

  <input name="checkOrder['.($row['ord_no']).'][checked]" value="" type="checkbox" class="checkOrder" id="checkOrder">
  <input type="hidden" name="checkOrder['.($row['ord_no']).'][ord_no]" value="'.($row['ord_no']).'" />
  <input type="hidden" name="checkOrder['.($row['ord_no']).'][item_seq_no]" value="'.$line_number.'" />
  <input type="hidden" name="checkOrder['.($row['ord_no']).'][item_no]" value="'.$item_number.'" /> 
  <input type="hidden" name="checkOrder['.($row['ord_no']).'][item_desc_1]" value="'.$item_description.'" /></input>

如果你现在var_dump($ _ POST);你有:

[checkOrder] => Array
(
        [1000007] => Array
        (
          [ord_no] => 1000007, [item_seq_no] => 1, [item_no] => 001, [item_desc_1] => item1, [checked]='on'
        )
        [1000008] => Array
        (
          [ord_no] => 1000008, [item_seq_no] => 1, [item_no] => 002, [item_desc_1] => item2, [checked]='on'
        )
        [1000000] => Array
        (
          [ord_no] => 100000, [item_seq_no] => 1, [item_no] => 003,[item_desc_1] => item3, [checked]='on'
        )
        [1000001] => Array
        (
          [ord_no] => 1000001, [item_seq_no] => 1, [item_no] => 001, [item_desc_1] => item1, [checked]='on'
        )
)

[checked]='on'仅在您在表单中检查过时才会出现。

希望有所帮助。

I need to save just the order numbers outside the foreach

然后使用array_keys($_POST['checkOrder'])并获得ID。

但你应该使用而不是

<input name="checkOrder['.($row['ord_no']).'][checked]" value="" type="checkbox" class="checkOrder" id="checkOrder">

<input name="checkedOrders[]" value="'.($row['ord_no'].'" type="checkbox" class="checkOrder" id="checkOrder">

然后在$_POST['checkedOrders']中是表格中检查过的所有ID。

其余的仍然是一样的。