通过foreach PHP分配数组

时间:2016-08-01 08:23:31

标签: php arrays

我有以下代码:

$data = array();
foreach ($_POST as $field => $value) {
    // ex: $field = "1f_fieldname";
    if($field[1] == "f")
    {
        // $field[0] is numeric
        $i = $field[0];
        $data = array($i => $value);
    }
}

数组$ data只打印分配的最后一个元素 例如:

print_r($data);

打印以下内容:

  

数组(
[3] =>“value3”

而不是:

  

数组(
[0] =>“value1”,
  [1] => “value2”,
[2] => “value2”,
[3] => “值3”

它出了什么问题?

编辑: 当我从foreach内部打印数组时,它会打印整个元素。 但是当我将它打印在foreach之外时,它将只打印最后一个。

1 个答案:

答案 0 :(得分:1)

这一行错了:

$data = array($i => $value);

它用一个只包含单个元素的新数组替换整个数组。它应该是:

$data[$i] = $value;

向数组添加新元素。但是,如果$_POST中的两个键与第一个字符具有相同的数字(例如1f_fieldA1f_fieldB),则后一个键将替换第一个键。