我无法使用foreach循环访问数组元素。
<?php
echo "<form method=post action=test.php>";
echo "Item Name: <input type=text name=item[]>";
echo "Price: <input type=text name=item[]>";
echo "Quantity: <input type=text name=item[]>";
echo "<BR>";
echo "<BR>";
echo "<input type=submit name=submit>";
if (isset ($_POST['item']))
{
$item = $_POST['item'];
}
$item = array (
$item_name = $item [0],
$price = $item [1],
$qty = $item [2],
);
foreach ($item as $item)
{
echo $item[0];
echo $item[1];
echo $item[2];
}
?>
答案 0 :(得分:0)
简单来说,就是根据需要的字段(名称,价格,数量)重命名<input type=text
,然后按名称从$ _POST获取数据:
echo "<form method=post action=test.php>";
echo "Item Name: <input type=text name='name'>";
echo "Price: <input type=text name='price'>";
echo "Quantity: <input type=text name='qty'>";
echo "<BR>";
echo "<BR>";
echo "<input type=submit name=submit>";
$name = "";
if (isset ($_POST['name']))
{
$name = $_POST['name'];
}
$price = "";
if (isset ($_POST['price']))
{
$price = $_POST['price'];
}
$qty = "";
if (isset ($_POST['qty']))
{
$qty = $_POST['qty'];
}
如果你想使用更灵活的方法和可能的输入字段列表,那么创建具有可能的字段名称的键数组,并检查foreach循环中每个键的所有存在:
$all_possible_items_keys = ["name","price","qty","author"];
$items = [];
foreach ( $all_possible_items_keys as $key )
{
if (isset ($_POST[$key]))
{
$items[$key] = $_POST[$key];
}
}
print_r($items);
输出示例:
Array ( [name] => 11 [price] => 11 [qty] => 22 ):
为<input type=text
添加姓名并将其添加到$all_possible_items_keys
,然后$items
将保留密钥=&gt;值。
答案 1 :(得分:0)
在循环内部,$item
只是数组的一个元素,因此您不应该对其进行索引。 $item[0]
是元素的第一个字符。
对于数组和循环中的元素使用相同的变量也很困惑。
像这样写:
foreach ($item as $element) {
echo $element;
}
但相反,您应该像这样设置HTML:
<form method="post" action="test.php">
Item Name: <input type="text" name="product_name[]">
Price: <input type="text" name="price[]">
Quantity: <input type="text" name="quantity[]">
<br><br>
Item Name: <input type="text" name="product_name[]">
Price: <input type="text" name="price[]">
Quantity: <input type="text" name="quantity[]">
<br><br>
Item Name: <input type="text" name="product_name[]">
Price: <input type="text" name="price[]">
Quantity: <input type="text" name="quantity[]">
<br><br>
Item Name: <input type="text" name="product_name[]">
Price: <input type="text" name="price[]">
Quantity: <input type="text" name="quantity[]">
<br><br>
...
<input type="submit" name="submit">
</form>
然后您的PHP代码可以执行以下操作:
$items = array();
foreach ($_POST['product_name'] as $i => $item_name) {
$price = $_POST['price'][$i];
$quantity = $_POST['quantity'][$i];
if (!empty($item_name) && !empty($price) && !empty($quantity)) {
// code to insert into database
}
}