使用php通过POST提交多维数组我有一个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阵列更好。
3 回答
大话西游666
TA贡献1817条经验 获得超14个赞
在提交时,您将获得一个数组,就好像这样创建:
$_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>';}
Smart猫小萌
TA贡献1911条经验 获得超7个赞
您可以使用这样的命名提交所有参数:
params[0][topdiameter]params[0][bottomdiameter]params[1][topdiameter]params[1][bottomdiameter]
然后你会做这样的事情:
foreach ($_REQUEST['params'] as $item) { echo $item['topdiameter']; echo $item['bottomdiameter'];}
慕的地8271018
TA贡献1796条经验 获得超4个赞
我创建了一个处理数组以及单个GET或POST值的函数
function subVal($varName, $default=NULL,$isArray=FALSE ){ // $isArray toggles between (multi)array or single mode $retVal = ""; $retArray = array(); if($isArray) { if(isset($_POST[$varName])) { foreach ( $_POST[$varName] as $var ) { // multidimensional POST array elements $retArray[]=$var; } } $retVal=$retArray; } elseif (isset($_POST[$varName]) ) { // simple POST array element $retVal = $_POST[$varName]; } else { if (isset($_GET[$varName]) ) { $retVal = $_GET[$varName]; // simple GET array element } else { $retVal = $default; } } return $retVal;}
例子:
$curr_topdiameter = subVal("topdiameter","",TRUE)[3];$user_name = subVal("user_name","");
- 3 回答
- 0 关注
- 921 浏览
添加回答
举报
0/150
提交
取消