<html><body><form method="post"><table border="1"><tr><td width="200">学号</td><td width="200">姓名</td><td width="200">成绩</td></tr><?php for ($i = 0; $i < 5; $i++) { echo "<tr>"; echo "<td width='200'><input type='text' name='xh[]' style='width:200px' value='".$_POST['xh'][$i]."'></td>"; echo "<td width='200'><input type='text' name='xm[]' style='width:200px' value='".$_POST['xm'][$i]."'></td>"; echo "<td width='200'><input type='text' name='cj[]' style='width:200px' value='".$_POST['cj'][$i]."'></td>"; echo "</tr>";}?><tr><td colspan="3" align="center"><input type="submit" name="submit1" value="提交"></td></tr></table></form><?php if (isset($_POST["submit1"])) { $XH = $_POST["xh"]; $XM = $_POST["xm"]; $CJ = $_POST["cj"];}?></body></html>“.$_POST['xh'][$i].”
这一句是什么意思?为什么要加上“["xh"]”?前后分别两个 "."又是什么意思?
为什么提交后,$xh会得到一个数组?创建数组不是要用到array()函数吗?
回复讨论(解决方案)
. 是字符串连接运算
为什么html数组要用类似name='xh[]'是php的约定
参考
http://php.net/manual/zh/faq.html.php#faq.html.arrays
实际上浏览器POST过去的数据是这样的(位于http头下方)
xh[]=第一个值&xh[]=第二个值
到服务端php会解析为
$_POST['xh']=array(
0 => '第一个值',
1 => '第二个值'
)
所以要$_POST[‘xh’][0]会获取'第一个值'
通常情况下(没用用表单数组)
浏览器端的
POST到服务器端php会解析为
$_POST['xh']=0;
这里的.没有作用的,如一楼,是连接字符串的操作符。“a”.“b”=“ab”
. 是字符串连接运算
不是很懂。。。如果是引用不是在变量前加一个.就可以了吗?为什么这里要在前后加一个.;如果把后面那个.去掉就会报错。。
echo "<td width='200'><input type='text' name='xh[]' style='width:200px' value='".$_POST['xh'][$i]."'></td>";
echo 后边是三个字符串相连接(下边红色的是双引号)
第一个是: "
第三个是: "'>
实在不习惯这样拼接字符串就用类似C语言的printf或者sprintf函数
printf("<td width='200'><input type='text' name='xh[]' style='width:200px' value='%s'></td>", $_POST['xh'][$i] );
echo "<td width='200'><input type='text' name='xh[]' style='width:200px' value='".$_POST['xh'][$i]."'></td>";
echo 后边是三个字符串相连接(下边红色的是双引号)
第一个是: "
第三个是: "'>
实在不习惯这样拼接字符串就用类似C语言的printf或者sprintf函数
立即学习“PHP免费学习笔记(深入)”;
printf("<td width='200'><input type='text' name='xh[]' style='width:200px' value='%s'></td>", $_POST['xh'][$i] ); 嗯嗯,最近代码打多了就理解了。。
谢谢你~~











