【问题标题】:Add values to a two dimensional array dynamically in PHP from a foreach loop [closed]从foreach循环在PHP中动态地将值添加到二维数组[关闭]
【发布时间】:2012-10-03 14:38:22
【问题描述】:

我有以下来自表单提交的数组:

 Array ( [id0] => id [gd0] => 50% [q0] => 1 [p0] => 10 [t0] => 10 [id1] => id [gd1] => 65%     [q1] => 2 [p1] => 20 [t1] => 40 [id2] => id [gd2] => 90% [q2] => 2 [p2] => 510 [t2] => 1020 )

我想通过存储相同的值使其成为一个二维数组,像这样的新模式:

Array (array([id0] => id [gd0] => 50% [q0] => 1 [p0] => 10 [t0] => 10 ) , array([id1] => id [gd1] => 65% [q1] => 2 [p1] => 20 [t1] => 40 ) , array([id2] => id [gd2] => 90% [q2] => 2 [p2] => 510 [t2] => 1020))

因此,我试图在另一个数组的新维度中重新排列相似的信息。我尝试了一个 foreach 循环,但没有运气:

 $items = array();
                $X = -1; // the index of the first dimension
                $Y = 0; // the second index


 foreach ($_POST as $val) {


                    if ($val == 'id') {

                        $X++;
                        $Y = 0;
                    } else {

                        $items[$X][$Y] == $val;

                        // increment the second index to prevent overwriting

                        $Y++;
                    }
                }

                print_r($items);

但是,它不起作用。 print_r() 仅显示 Array()

【问题讨论】:

  • 如果您可以控制表单的 html,那么使用数组表示法可能是个好主意:name="data[0][theKeyForTheField]",那么您就已经把所有东西都整理好了。

标签: php post loops multidimensional-array foreach


【解决方案1】:

您在 else 语句中使用了相等运算符 == 而不是赋值运算符 =

【讨论】:

  • 该死,我怎么看不到!
  • 我们都去过那里(可能很多次)。
【解决方案2】:

我假设您在表单提交中有某种数组输入。如果是这样,您可以尝试像这样命名字段。它会直接在 $_POST 变量中为您提供一个二维数组。

<input type="text" name="data[0][id]" />
<input type="text" name="data[0][gd]" />
<input type="text" name="data[0][q]" />
<input type="text" name="data[0][p]" />
<input type="text" name="data[0][t]" />

<input type="text" name="data[1][id]" />
<input type="text" name="data[1][gd]" />
<input type="text" name="data[1][q]" />
<input type="text" name="data[1][p]" />
<input type="text" name="data[1][t]" />

<input type="text" name="data[2][id]" />
<input type="text" name="data[2][gd]" />
<input type="text" name="data[2][q]" />
<input type="text" name="data[2][p]" />
<input type="text" name="data[2][t]" />

$_POST 数组看起来像:

array(
  "data" => array(
    0 => array("id" => "value", "gd" => "value" ... ),
    1 => array("id" => "value", "gd" => "value" ... ),
    2 => array("id" => "value", "gd" => "value" ... ),
  )
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 2015-03-07
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 2011-03-07
    相关资源
    最近更新 更多