发送POST数组

时间:2014-12-12 09:42:25

标签: php arrays sorting post

当我点击提交时,我需要将每个.product-insert的数据(所以product_name和product_price)保存在如下数组中:

array(
    [0] => array(
        'name'  => 'Camera',
        'price' => 120
    ),
    [1] => array(
        'name'  => 'Radio',
        'price' => 80
    )
);

因为我已将数据(产品名称和价格)组合在一起,所以很难将其循环。

我的字段:

<div class="product-insert">
    <select name="product_name[]">
      <option value="Camera">Camera</option>
      <option value="Radio">Radio</option>
      <option value="Television">Television</option>
    </select>
   <input name="product_price[]" />
</div><!--End .product-insert-->

<div class="product-insert">
    <select name="product_name[]">
      <option value="Camera">Camera</option>
      <option value="Radio">Radio</option>
      <option value="Television">Television</option>
    </select>
    <input name="product_price[]" />
</div><!--End .product-insert-->

<!--This button can add extra fields with javascript--> 
<input type="button" name="add_product" />

<!--This is the submit button for saving all the fields-->
<input type="submit" name="submit_products" />

这就是我现在所拥有的:

if( isset( $_POST['submit_products'] ) ) {
    $products = array_combine( $_POST['product_name'], $_POST['product_price'] );
    $products = array_filter( $products );
    $products = array_map( 'htmlentities', $products );
}

提供以下输出:

[Camera] => 120 [Radio] => 80

2 个答案:

答案 0 :(得分:0)

您需要设置输入名称

<div class="product-insert">
    <select name="product[0][name]">
      <option value="Camera">Camera</option>
      <option value="Radio">Radio</option>
      <option value="Television">Television</option>
    </select>
   <input name="product[0][price]" />
</div><!--End .product-insert-->

如果您有另一个,则将0更改为1。

然后$ _POST将如下所示:

Array
(
    [product] => Array
        (
            [0] => Array
                (
                    [name] => Radio
                    [price] => value
                )
        )
)

答案 1 :(得分:0)

我解决了我的问题如下:

$product_prices = $_POST['product_price'];
        foreach( $_POST['product_name'] as $key => $value ) {
            $products[] = array( 
                'name'  => $value,
                'price'     => $product_prices[$key]
        ); 
}