วิธีรับค่าอาร์เรย์สองค่าภายในหนึ่ง foreach()

มีสองค่าที่ฉันต้องการได้รับจากผู้ใช้นั่นคือชื่อและราคา ฉันได้สร้างฟังก์ชันสร้างแถวอัตโนมัติที่สร้างกล่องอินพุตที่มีชื่อเดียวกัน ตอนนี้ฉันต้องการเก็บไว้ในฐานข้อมูล ฉันใช้ foreach แต่ได้รับเพียงอาร์เรย์เดียวเท่านั้น อยากเก็บทั้งชื่อและราคาครับ ฉันจะทำอย่างนั้นได้อย่างไร นี่คือรหัสของฉัน

แบบฟอร์ม HTML

<form method="post">
    <input type="text" name="name[]" /><input type="text" name="price[]" />
    <input type="text" name="name[]" /><input type="text" name="price[]" />
    <input type="text" name="name[]" /><input type="text" name="price[]" />
    <input type="text" name="name[]" /><input type="text" name="price[]" />

    <input type="submit" value="Submit" name="submit" />
</form>

รหัส PHP

if(isset($_POST['submit']))
{
    foreach($_POST['name'] as $name)
    {
        echo $name;
    }
}

person Abdullah    schedule 05.01.2016    source แหล่งที่มา
comment
คำตอบปัจจุบันทั้งหมดจะใช้ได้ ดังนั้นโปรดเลือกและยอมรับคำตอบที่เหมาะกับความต้องการเฉพาะของคุณ   -  person RiggsFolly    schedule 05.01.2016


คำตอบ (4)


เรียกดัชนีในลูปด้วย จากนั้นเลือกค่าที่สอดคล้องกันจากอาร์เรย์อื่น

foreach($_POST['name'] as $id => $name)
{
    echo $name;
    echo $_POST['price'][$id]
}
person Geoff Atkins    schedule 05.01.2016

แล้วเรื่องนี้ล่ะ

if(isset($_POST['submit']))
{
    $names = $_POST['name']; # array
    $prices = $_POST['price']; # array

    foreach($names  as $id => $name)
    {
        echo $name;
        echo "<br>";
        echo $prices[$id]
    }
}
person Abdulla Nilam    schedule 05.01.2016
comment
@Abdullah ตรวจสอบสิ่งนี้ - person Abdulla Nilam; 05.01.2016

หากคุณรู้ว่าอาร์เรย์ทั้งสองจะมีความยาวเท่ากัน for loop แบบง่ายจะทำ:

if(isset($_POST['submit']) && count($_POST['name']) == count($_POST['price']))
{
    for($i=0; $i < count($_POST['name']); $i++)
    {
        echo $_POST['name'][$i] . ' ' . $_POST['price'][$i];
    }
}
person Steve    schedule 05.01.2016

ลองสิ่งนี้

$names = array_combine($_POST['name'], $_POST['price']);
foreach($names as $firstname => $price) {
  echo $firstname . ' ' . $price . '<br>';
}
person Syed mohamed aladeen    schedule 05.01.2016