PHP从表单传递并接收二维数组

时间:2012-04-16 20:01:04

标签: php forms multidimensional-array

我正在尝试传递两个配对变量,一个类别及其用户创建的类别的ID,从webform到文件进行处理。我希望将它们保持链接,因此如果有人更改了名称字段,我们就会清楚它们正在更改哪条记录,因为此记录通过id链接到其他表。

最初试过的二维数组......已经放弃了这种方法。现在尝试按照下面的建议使用两个一维数组。我将使用数组,因为表单上的条目数取决于用户创建的类别数。 Categories表有id(int),cat(text)和userid(int)字段

传递两个数组的难度在于如何链接这两个数组。如果我将类别作为数组传递给接收页面,我可以迭代值来生成sql语句来更改每个条目。但是,我无法弄清楚如何获得识别记录所需的正确ID。如果我在foreach中使用foreach($ idarray作为$ id)(catsarray为$ val),我会为每只猫获得多个id。如何通过迭代猫迭代迭代id?非常感谢您的帮助,因为我现在已经花了两天时间:(

//I am working with $catsarray and $idarray, each with identical indexes, 1,2,3 etc.
//How do I get appropriate id for each cat
foreach($catsarray as $val) {
$sql = "UPDATE cats, set name = $val WHERE (userid ='$userid' AND id=??????)";
mysql_query($sql);
}

1 个答案:

答案 0 :(得分:4)

用于创建二维数组的良好且单一的语法;

  <input type="text" name="cat[]" value="cat1">
  <input type="text" name="cat[]" value="cat2">
    ...

接收猫时;

echo $_POST['cat'][0] // echoes cat1
echo $_POST['cat'][1] // echoes cat2

进一步的例子;

根据这个定义,

<input type="text" name="cat[$cat][$id]" value="cat1">

foreach ($_POST['cat'] as $a=>$b){
    // $a == $cat
    foreach($b as $c=>$d) {
       // $c == $id
    }
}