Передача многомерного массива через POST с 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-массивов.

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

 $_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>'; } 

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

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

то позже вы сделаете что-то вроде этого:

 foreach ($_REQUEST['params'] as $item) { echo $item['topdiameter']; echo $item['bottomdiameter']; }