大家好!正在读一本PHP教程,有一个示例是这样的: 让用户输入几个文本框,生成下一页表单的select的各option:输入页:
<td>Select option</td>
<td>
<?php
 for ($i=0; $i<5; $i++) {
 echo '<input type="text" name="sval['.$i.']" /><br/>';
 }
?>
</td>
下一页中的select:
<select>
<?php
 for ($i=0; $i<5; $i++) {
   echo '<option value="'.$_POST['sval'][$i].'">'.$_POST['sval'][$i].'</option>';
 }
?>
</select>
我的疑问是:输入页input的name既然是:sval[0] 或 sval[1] 等,为什么接收它的代码是:$_POST['sval'][$i] 呢?觉得应该是:$_POST['input的name'] 啊!但是经测试,书里的代码是正确的,可它这个 $_POST['sval'][$i] 中的 $_POST['sval'] 不是就完成了接收的语句了吗?(按正常的逻辑,$_POST['name的值']),为什么它这里分开写呢?后面又加上了 [$i] ?

解决方案 »

  1.   

    因为$_POST数组保存全部post变量,即如果你页面上<input name="aaa">提交变量aaa,在php中接收变量的是$_POST['aaa']。同理,在页面上提交的是数组sval[$i],在php中接收的就是$_POST['sval'][$i]
      

  2.   

    .$_POST['sval'][$i].  这样写说明就是准备要传数组。而下一个页里面是接收数组,所以是正确的,这种语法只有php才有,所以你才觉得怪
      

  3.   

    取有规则的名称
    再_post规则名称
    你也可以这样。
    输入页: 
    <td>Select option </td> 
    <td> 
    <?php 
    for ($i=0; $i <5; $i++) { 
    echo ' <input type="text" name="sval[]" /> <br/>'; 

    ?> 
    </td> //-----------------------------
    <select> 
    <?php 
    $vl=$_POST["sval"]
    for ($i=0; $i <5; $i++) { 
      echo ' <option value="'.$vl[$i].'">'.$vl[$i].' </option>'; 

    ?> 
    </select> 
      

  4.   

    php 不同于ASP
    asp同名称的,他取值都能取到,行成value="v1,v2,v3"格式
    php同名称的得加上[]
    取到的是数组。