猿问

使用php通过POST提交多维数组

使用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阵列更好。


婷婷同学_
浏览 922回答 3
3回答

大话西游666

在提交时,您将获得一个数组,就好像这样创建:$_POST['topdiameter']&nbsp;=&nbsp;array(&nbsp;'first&nbsp;value',&nbsp;'second&nbsp;value'&nbsp;);$_POST['bottomdiameter']&nbsp;=&nbsp;array(&nbsp;'first&nbsp;value',&nbsp;'second&nbsp;value'&nbsp;);但是,我建议您将表单名称更改为此格式:name="diameters[0][top]"name="diameters[0][bottom]"name="diameters[1][top]"name="diameters[1][bottom]"...使用该格式,循环使用这些值会更容易。if&nbsp;(&nbsp;isset(&nbsp;$_POST['diameters']&nbsp;)&nbsp;){ &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;'<table>'; &nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(&nbsp;$_POST['diameters']&nbsp;as&nbsp;$diam&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;here&nbsp;you&nbsp;have&nbsp;access&nbsp;to&nbsp;$diam['top']&nbsp;and&nbsp;$diam['bottom'] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;'<tr>'; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;'&nbsp;&nbsp;<td>',&nbsp;$diam['top'],&nbsp;'</td>'; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;'&nbsp;&nbsp;<td>',&nbsp;$diam['bottom'],&nbsp;'</td>'; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;'</tr>'; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;'</table>';}

Smart猫小萌

您可以使用这样的命名提交所有参数:params[0][topdiameter]params[0][bottomdiameter]params[1][topdiameter]params[1][bottomdiameter]然后你会做这样的事情:foreach&nbsp;($_REQUEST['params']&nbsp;as&nbsp;$item)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$item['topdiameter']; &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$item['bottomdiameter'];}

慕的地8271018

我创建了一个处理数组以及单个GET或POST值的函数function&nbsp;subVal($varName,&nbsp;$default=NULL,$isArray=FALSE&nbsp;){&nbsp;//&nbsp;$isArray&nbsp;toggles&nbsp;between&nbsp;(multi)array&nbsp;or&nbsp;single&nbsp;mode &nbsp;&nbsp;&nbsp;&nbsp;$retVal&nbsp;=&nbsp;""; &nbsp;&nbsp;&nbsp;&nbsp;$retArray&nbsp;=&nbsp;array(); &nbsp;&nbsp;&nbsp;&nbsp;if($isArray)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(isset($_POST[$varName]))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(&nbsp;$_POST[$varName]&nbsp;as&nbsp;$var&nbsp;)&nbsp;{&nbsp;&nbsp;//&nbsp;multidimensional&nbsp;POST&nbsp;array&nbsp;elements &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$retArray[]=$var; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$retVal=$retArray; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;elseif&nbsp;(isset($_POST[$varName])&nbsp;)&nbsp;&nbsp;{&nbsp;&nbsp;//&nbsp;simple&nbsp;POST&nbsp;array&nbsp;element &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$retVal&nbsp;=&nbsp;$_POST[$varName]; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(isset($_GET[$varName])&nbsp;)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$retVal&nbsp;=&nbsp;$_GET[$varName];&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;simple&nbsp;GET&nbsp;array&nbsp;element &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$retVal&nbsp;=&nbsp;$default; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$retVal;}例子:$curr_topdiameter&nbsp;=&nbsp;subVal("topdiameter","",TRUE)[3];$user_name&nbsp;=&nbsp;subVal("user_name","");
随时随地看视频慕课网APP
我要回答