0

我有一个非常简单的产品表格。每个产品都有一个复选框和数量字段,它们重复创建如下数据数组:

<form action="process.php" method="post">
<input type="checkbox" name="product[]" value="product 1" />
<input type="text" name="quantity[]" />

<input type="checkbox" name="product[]" value="product 2" />
<input type="text" name="quantity[]" />

<input type="submit" />
</form>

然后我在 php 中按以下方式处理此表单:

//php script to retrieve data
$product    = isset($_POST['product'])  ? implode(', ', $_POST['product'])  : 'Not selected'; 
$quantity   = isset($_POST['quantity']) ? implode(', ', $_POST['quantity']) : 'Not mentioned'; 

$messageToSend = <<<END

Products:  $product - $quantity

END;

输出结果例如:Products: product 1, product 2 - 10, 2

但我想要实现的是以下输出: 产品:产品 1 - x 10,产品 2 - x 2

基本上我想弄清楚的是如何在我检索数据后在 php 脚本中为每个产品拆分和分组数据。

非常感激您的帮忙。

4

2 回答 2

3
  1. 这看起来并不完全是 php。
  2. 您只需要一起遍历两个列表:

    foreach ($quantity as $key => $quant) {
        echo $product[$key].' - x'.$quant;
    }
    

这是一般的想法,但正如评论中提到的,单独这样做并不是真正的解决方案。

需要记住的一些事项:

  1. 如果未选中复选框,它们将不会传递值,因此您获得的 $product 数组的大小不会与 $quantity 数组的大小相同,也不会按照您的意愿与 $quantity 数组对齐。(尝试以不同的方式命名您的复选框,即产品[1])。- 谢谢 tmuguet
  2. 如果没有选中任何复选框,您将不会获得数组,因此将其传递给 foreach 将生成您提到的错误。
于 2013-01-10T00:59:40.823 回答
0

试试这个:

<?php 
foreach($_POST['product'] as $key => $product){
   $quantity = isset($_POST['quantity'][$key])? $_POST['quantity'][$key]:'Not selected';
   $message[] = $product.' - x'.$quantity;
}
echo implode(',', $message);
?>
于 2013-01-10T01:10:03.090 回答