2012-10-11 21 views
1

有一个表格谁看起来像:加入多个阵列我一起

<form method="POST"> 
    <p>Model 1</p> 
     <input name="data_quantity[]"> 
     <input name="data_consignment[]"> 
     <input name="data_price[]"> 

    <p>Model 2</p> 
     <input name="data_quantity[]"> 
     <input name="data_consignment[]"> 
     <input name="data_price[]"> 

    <p>Model 3</p> 
     <input name="data_quantity[]"> 
     <input name="data_consignment[]"> 
     <input name="data_price[]"> 

    ... 
</form> 

现在。当我读了PHP的数据,我有POST阵列($_POST)三个数组:$_POST['data_quantity'], $_POST['data_consignment'], $_POST['data_price'] ...

我需要让我算一个数组的总的将它们合并在一起,我做了for和我重新数组中的每个数组中的值。快速示例:

public function build_Lineitems($Quantity=array(), $Consignment=array(), $TransferFrom=array(), $TransferTo=array(), $Price=array(), $Attributes=array()){ 
    ... 

    # On va boucler sur un des 6 tableaux... 
    $Lineitems = array(); 

    foreach($Quantity as $ModelID => $Lineitem){ 
     # Entrée dans le tableau 
     if(isset($Lineitems[$ModelID]) === FALSE){ 
      $Lineitems[$ModelID] = array(); 
     } 

     # Est-ce que c'est un tableau 
     if(is_array($Lineitem) === TRUE){ 
      foreach($Lineitem as $Entry => $Clone){ 
       $Lineitems[$ModelID][] = array(
        'qty'  => (isset($Quantity[$ModelID][$Entry]) === TRUE ? $Quantity[$ModelID][$Entry] : array()), 
        'con'  => (isset($Consignment[$ModelID][$Entry]) === TRUE ? $Consignment[$ModelID][$Entry] : array()), 
        'xferfrom' => (isset($TransferFrom[$ModelID][$Entry]) === TRUE ? $TransferFrom[$ModelID][$Entry] : array()), 
        'xferto' => (isset($TransferTo[$ModelID][$Entry]) === TRUE ? $TransferTo[$ModelID][$Entry] : array()), 
        'price'  => (isset($Price[$ModelID][$Entry]) === TRUE ? $Price[$ModelID][$Entry] : array()), 
        'attr'  => (isset($Attributes[$ModelID][$Entry]) === TRUE ? (empty($Attributes[$ModelID][$Entry]) === FALSE ? explode(',', $Attributes[$ModelID][$Entry]) : array()) : array()) 
       ); 
      } 
     } else { 
      # Okay 
      $Lineitems[$ModelID] = array(
       'qty'  => (isset($Quantity[$ModelID]) === TRUE ? $Quantity[$ModelID] : array()), 
       'con'  => (isset($Consignment[$ModelID]) === TRUE ? $Consignment[$ModelID] : array()), 
       'xferfrom' => (isset($TransferFrom[$ModelID]) === TRUE ? $TransferFrom[$ModelID] : array()), 
       'xferto' => (isset($TransferTo[$ModelID]) === TRUE ? $TransferTo[$ModelID] : array()), 
       'price'  => (isset($Price[$ModelID]) === TRUE ? $Price[$ModelID] : array()), 
       'attr'  => array() 
      ); 
     } 
    } 

    # On renvoie 
    return $Lineitems; 
} 

我的问题,有没有一种更干净的方式来做到这一点?谢谢。 (这一点:多阵列的融合部

回答

0

你有没有想过array_merge或其递归哥哥将合并里面太 一切虽然你要小心,不要直接使用它在$ _ POST不要让不良数据

+0

是的,我做过。但他们不会有好的关键(它会是数字)。另外,如果你正确处理$ _POST,一切都很好。 –

+0

那么阵列走路怎么样?过滤数据? – charly

1

您可以张贴值多维摆在首位:

<input name="data[quantity][]"> 

或以不同的分层顺序(递增计数$i):

<input name="data[<?php echo $i; ?>][quantity]">