先贴上我的代码和截图
这里用了两个列子,都用到了list()遍历数组的功能:
例1:
<form name="form1" method="post">
<table width="323" border="1" cellpadding="1" cellspacing="1" bordercolor="#66cc33" bgcolor="#ffffff">
<tr>
<td width="118" height="24" align="center" bgcolor="#ccff33">用户名:</td>
<td width="192" height="24" bgcolor="#ccff33"><input name="user" type="text" class="inputcss" id="user" size="24"></td>
</tr>
<tr>
<td height="24" align="center" bgcolor="#ccff33">密 码: </td>
<td height="24" bgcolor="#ccff33"><input name="pwd" type="password" class="inputcss" id="psw" size="25"></td>
</tr>
<tr align="center" bgcolor="#ccff33">
<td height="24" colspan="2"><input name="submit" type="submit" value="登陆"></td>
</tr>
</table>
</form>
<?php
while(list($n,$v)=each($_POST)){
if($n!="submit"){
echo "$n=$v<br>";
}
}
?>
下面说一下这个list()函数遍历数组:
我的截图中在编辑框中的内容没有显示出来!
假设用户输入的用户名是zhuheiji,密码是pwd
那么在php代码段中,$_POST这个地方返回的是什么呢?
用了一个each包裹这个$_POST,即每一次都有一组数据传进来。第一次传入的数据是(user,zhuheiji),第二次传入的数据是(pwd,111111)。
那么这个user 和pwd哪里来的呢?看代码,分别是两个html语句 <input name="user".......> ,,,,,,,,,,,<input name="pwd">的name值。
得到了这个传入的$_POST(说白了这个数据时以键值对的形式),接下来分别把键和值赋给list($n,$v)中的$n和$v。好了,这样一次循环输出一个传入的值,有多少个
值传入,while循环就循环多少次。
例2:
<form name="form1" method="post" action="">
<table width="400" border="1" cellspacing="1" cellpadding="0" bordercolor="#ff9900" bgcolor="#ccff66">
<tr align="center">
<td width="98" height="120">添加投票选项:</td>
<td width="223" height="120">
<p>
<textarea name="content" cols="30" rows="5" id="content"></textarea>
<br>
<span class="style1"></span>
</p>
</td>
<td width="61" height="120"><input type="Submit" name="Submit" value="提交"></td>
</tr>
</table>
</form>
<?PHP
error_reporting(0);
if($_POST[Submit]!=""){
$content=$_POST[content];
$data=explode("*",$content);
while(list($n,$v)=each($data)){
echo '<input type="checkbook" name="checkbox" value="">';
echo $v."\n";
}
}
?>
在第二个例子中用到了一个 error_reporting(0); 这是用来去除显示时“提醒”的作用。大家去这句话掉试一下,就明白了!
这里的$_POST[content]比示例1中的$_POST多了一个[content],这个content是<textarea name="content".......>中的content,即传入的是多行输入框中用户输入的值,下面通过了一个explode函数,通过*号来将$content分割成若干个数组元素。接下来,就是本文要讨论的list()函数遍历数组的内容了。说白了,将数组的中的元素赋值给list($n,$v)两个变量,本例子稍微和例1中的有些不容,这里数组的每一个元素都只有一个值,没有键。所以这里将这个值赋给$v这个变量。那么$n这个变量呢,其实是变成了以0开头的序列,即第一个循环默认为零,第二个循环$n的值为2.一次类推。。。。。。
好了,经过这样的理解,至少不会对list()遍历数组感到很迷糊了