查找变量是否在数组中设置?

时间:2011-10-29 23:15:56

标签: php arrays forms

有人能指出我正确的方向吗?我真的很困惑(我是初学者:D)。 例如:

<form action="<?php $_server['php_self'] ?>" method=post>
<table width="50%" style="border: 1px solid #999;" cellspacing="0" cellpadding="0">
  <tr>
    <td width="35%">
        <input type="button" value="Add Subitem">
        <input type="button" value="Add Category">
    </td>
    <td width="65%">
        <input type="hidden" name="row[]" value="1">
        <input type="text" name="categ[]" value="Sample Category" >
    </td>
  </tr>
  <tr>
    <td>
        <input type="button" value="Add Subitem">
        <input type="button" value="Add Category">
    </td>
    <td>
        <input type="hidden" name="row[]" value="2">
        <input type="text" name="sub[]" value="Sample Subitem" >
    </td>
  </tr>
  <tr>
    <td>
        <input type="button" value="Add Subitem">
        <input type="button" value="Add Category">
    </td>
    <td>
        <input type="hidden" name="row[]" value="3">
        <input type="text" name="categ[]" value="Sample Category" >
    </td>
  </tr>
</table>
<input type="submit" name="insBut" value="Save">
</form>

我怎么能在行[]中迭代?并查找该行是否有类或子?我试过这个

$row = $_post['row'];
$categ = $_post['categ'];
$sub = $_post['sub'];

for ($i=0;$i<count($row);$ii){
    if (isset($categ[$i])){
        $insQuery = pg_query("insert into rptdata_categ (blah blah) values (blah blah)");
    }elseif (isset($sub[$i])) {
        $insQuery = pg_query("insert into rptdata_sub (blah blah) values (blah blah)");
    }
}

但价值观错误,我试图用

回应它
echo $row[$i]."=".$categ[$i];

它给出了

1=Sample Category
2=Sample Category
3=

我知道如果你考虑它就恰到好处,但我怎样才能做到这一点

1=Sample Category
2=
3=Sample Category

哦,在我忘记之前,用户可以使用按钮添加类别或子项目自行添加类别或子项目。

2 个答案:

答案 0 :(得分:0)

由于您已经拥有所需的行号(在row[]中),为什么不将它放在文本输入的name中,然后完全删除隐藏的行号?

<td>
    <input type="text" name="categ[1]" value="Sample Category" />
</td>
...
<td>
    <input type="text" name="sub[8]" value="Sample Subitem" />
</td>

等等。然后,您已选择的数组索引已填充。

答案 1 :(得分:0)

任何空数组字段都不会计入最终数组。您应该只将行号添加到这些字段,例如sub[1]sub[2] ..您知道首先有多少字段,因此您可以添加新字段(JS对吗?)右边的行ID,比如设置基本字段的数量(3)作为起始点,每次用户点击你推进var的按钮