Представление многомерного массива по почте с php

У меня есть форма php, которая имеет известное число столбцов (напр. главный диаметр, нижний диаметр, матрица, цвет, количество), но имеет неизвестное количество строк, поскольку пользователи могут добавить строки, как им нужно.

Я обнаружил, как взять каждое из полей (столбцы) и разместить их в собственный массив.

<input name="topdiameter['+current+']" type="text" id="topdiameter'+current+'" size="5" />
<input name="bottomdiameter['+current+']" type="text" id="bottomdiameter'+current+'" size="5" />

Таким образом, то, с чем я заканчиваю в HTML:

<tr>
  <td><input name="topdiameter[0]" type="text" id="topdiameter0" size="5" /></td>
  <td><input name="bottomdiameter[0]" type="text" id="bottomdiameter0" size="5" /></td>
</tr>
<tr>
  <td><input name="topdiameter[1]" type="text" id="topdiameter1" size="5" /></td>
  <td><input name="bottomdiameter[1]" type="text" id="bottomdiameter1" size="5" /></td>
</tr>

...and so on.

Что я хотел бы сделать, теперь взятие, все строки и столбцы помещают их в многомерный массив и посылают содержание по электронной почте этого клиенту (предпочтительно в приятно отформатированной таблице). Я не смог действительно постигать, как объединить все те исходные данные и выбираю в хороший массив.

На данном этапе я оказываюсь перед необходимостью пытаться использовать несколько 1D массивы, хотя у меня есть идея, что использование единственного 2D массива было бы лучшей практикой, чем использование нескольких 1D массивы.

95
задан Willi Mentzel 18 November 2016 в 14:45
поделиться

2 ответа

При отправке вы получите массив, как если бы он был создан следующим образом:

$_POST['topdiameter'] = array( 'first value', 'second value' );
$_POST['bottomdiameter'] = array( 'first value', 'second value' );

Однако я бы предложил изменить имена форм на этот формат:

name="diameters[0][top]"
name="diameters[0][bottom]"
name="diameters[1][top]"
name="diameters[1][bottom]"
...

Используя этот формат, гораздо проще зацикливать значения.

if ( isset( $_POST['diameters'] ) )
{
    echo '<table>';
    foreach ( $_POST['diameters'] as $diam )
    {
        // here you have access to $diam['top'] and $diam['bottom']
        echo '<tr>';
        echo '  <td>', $diam['top'], '</td>';
        echo '  <td>', $diam['bottom'], '</td>';
        echo '</tr>';
    }
    echo '</table>';
}
143
ответ дан 24 November 2019 в 05:51
поделиться

вы можете отправить все параметры с таким именем:

params[0][topdiameter]
params[0][bottomdiameter]
params[1][topdiameter]
params[1][bottomdiameter]

, а затем сделайте что-то вроде этого:

foreach ($_REQUEST['params'] as $item) {
    echo $item['topdiameter'];
    echo $item['bottomdiameter'];
}
16
ответ дан 24 November 2019 в 05:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: