Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过foreach PHP分配数组_Php_Arrays - Fatal编程技术网

通过foreach PHP分配数组

通过foreach PHP分配数组,php,arrays,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将只打印

我有以下代码:

$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将只打印最后分配的元素。
例:

打印以下内容:

数组(
[3]=>“value3”

而不是:

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

有什么问题吗

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

这一行是错误的:

$data = array($i => $value);
它用只包含单个元素的新数组替换整个数组。应该是:

$data[$i] = $value;

将新元素添加到数组中。但是,如果您在
$\u POST
中有两个与第一个字符数字相同的键(例如
1f\u fieldA
1f\u fieldB
),则后一个键将替换第一个键。

原因
$field[0]
不是
“f”
?在行的顶部声明空数组,如$data=array();然后tryi做了,事实上,我也想到了,但仍然是同样的问题,那么它不应该打印一个数字索引数组,那么,如果在
foreach
内部和外部打印时得到不同的结果,那么在实际代码中还会发生什么呢,必须有
foreach
之外的内容正在更改数组。现在我终于从OP中获得了真正的代码,但我仍然对以前的迭代感到困惑。我已经删除了我的答案,现在我要去吃一片感冒药
$data[$i] = $value;