2016-08-01 68 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