我有一个非常简单的产品表单。每个产品都有一个复选框和数量字段,重复创建一个数据数组,如下所示:
<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 × 10,产品2 × 2
基本上我想弄清楚的是如何在我检索数据后,在php脚本中拆分和分组每个产品的数据。
非常感谢您的帮助。
- 这看起来不完全php。
-
你只需要同时遍历两个列表:
foreach ($quantity as $key => $quant) { echo $product[$key].' - x'.$quant; }
这是一般的想法,但正如评论中提到的,单独这样做并不是真正的解决方案。
注意事项:
- 复选框将不会传递一个值,如果他们没有被选中,所以你得到的$product数组将不会是相同的大小,也不会像你想的那样与$quantity数组对齐键值。(尝试以不同的方式命名复选框,例如product[1])。-谢谢tmuguet
- 如果没有一个复选框被选中,你将不会得到一个数组,所以将它传递给foreach会产生你提到的错误。
试试这个:
<?php
foreach($_POST['product'] as $key => $product){
$quantity = isset($_POST['quantity'][$key])? $_POST['quantity'][$key]:'Not selected';
$message[] = $product.' - x'.$quantity;
}
echo implode(',', $message);
?>