Как получить два значения массива в одном 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
@Абдулла Проверьте это - person Abdulla Nilam; 05.01.2016

Если вы знаете, что оба массива будут иметь одинаковую длину, подойдет простой цикл for:

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