【问题标题】:PHP pass and receive two dimensional array from formPHP 从表单传递和接收二维数组
【发布时间】:2012-04-28 04:15:39
【问题描述】:

我正在尝试将两个成对的变量、一个类别及其用于多个用户创建的类别的 id 从一个网络表单传递到一个文件进行处理。我想让它们保持链接,因此如果有人更改名称字段,我们很清楚他们正在更改的记录,因为该记录通过 id 链接到其他表。

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

传递两个数组的难点在于如何将两者联系起来。如果我将类别作为数组传递给接收页面,我可以遍历值以生成 sql 语句来更改每个条目。但是,我无法弄清楚如何获得识别记录所需的正确 id。如果我在 foreach(catsarray as $val) 中使用 foreach($idarray as $id),我将为每只猫获得多个 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);
}

【问题讨论】:

    标签: php forms multidimensional-array


    【解决方案1】:

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

      <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
        }
    }
    

    【讨论】:

    • 同意@miqbal,而不是尝试在其中包含cat和id的二维数组,只需创建两个一维数组,一个用于cat,另一个用于id。然后在 POST 端将两者循环在一起。
    • 使用第二个例子的变体,$b 是否代替了一维数组中的 $val 以便我可以根据需要调用 $a 或 $b ?非常感谢!
    • $a=&gt;$b 表示键=>值。我们的密钥是我们想要发送到服务器的 $cat 和 $id。注意$b 是一个属于 $a 类别的 id 数组。为了更容易理解,将您的表单设计为第二个示例并查看print_r($_POST['cat']);
    • 我打印出来了。所以我可以分别使用上面的$a和$c作为cat和id?
    • 使用您的确切语法 $a echoes $cat 和 $c echoes Array。有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多