通过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;