Лучше всего использовать массив, как вы это делали в первом примере.
Чтобы получить все результаты, что-то вроде этого будет работать:
$names = $this->input->post('nombre_contacto');
$emails = $this->input->post('mail_contacto');
Обе переменные теперь являются массивами, их значения соответствуют значениям, введенным пользователем, а ключи - в том порядке, в котором они появились в вашей форме.
Что-то вроде этого должно дать вам представление:
foreach ($names as $key => $value)
{
$contact[$key] = $value;
}
foreach ($emails as $key => $value)
{
$contact[$key] .= ' - '.$value;
}
Теперь у вас есть новый массив, значения которого выглядят так: John Smith - jon@smith.com
Это просто пример, я не знаю, что вы делаете со значениями.
Еще один пример: если по какой-то причине вам пришлось получить доступ к третьему опубликованному имени, вы можете использовать это:
echo $_POST['nombre_contacto'][2]; // Arrays have 0 based index, so this is #3
Это с вашими входными именами, содержащими brackets[]
. Это, на мой взгляд, безусловно, лучший способ. Вам не нужно будет угадывать, сколько входных данных существует, потому что это будет массив.
Просто для пояснения: использование скобок в именах полей превращает входные данные в массив при попадании на сервер, что позволяет публиковать несколько значений с одинаковым именем поля. Без скобок это будет строковое значение и , технически другое поле.