2016-08-01 65 views
-2

我有以下代码:通过分配的foreach PHP数组

$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); 
    } 
} 

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

print_r($data); 

打印如下:阵列(
[3] => “值3”
)的


代替:

数组(
[0] => “VALUE1”,
[1] => “VALUE2”
[2] => “VALUE2”
[3] => “值3”

什么毛病它?

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

+0

原因'$ field [0]'不是'“f”'? –

+0

声明行的顶部空数组,如$ data = array();然后尝试 –

+0

我做到了这一点,我也想到了这一点,但仍然是同样的问题 –

回答

1

这条线是错误的:

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

它取代了整个阵列与包含仅单个元件的新的数组。它应该是:

$data[$i] = $value; 

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

+0

现在我终于从OP中获得真正的代码了,我仍然对之前的迭代感到困惑。我已经删除了我的答案,现在就去吃点冷饮 – RiggsFolly