2013-09-23 18 views
3

我有以下循環:如何從循環變量插入到一個關聯數組在PHP

foreach($_POST as $key => $value) { 

      echo "Key:" . $key . " Value: ". $value . "<br />";   

      } 

其產生如下結果:

重點:1值:我的價值 重點: 8值:我的其他一些價值 鍵:9價值:另一個值

我所試圖做的是創建一個數組,應該是這樣的:

$editWhat = array(
       'field1'   => $key1, 
       'field2'   => $key2, 
       'field3'   => $key3, 
       'field4'  => $value1, 
       'field5'  => $value2, 
       'field6'  => $value3 
      ); 

逗號應該在數組中的最後一個值對中刪除,這會導致我出現其他問題。

任何幫助將深表謝意。

的問候,約翰

+0

你們是不是要創建這些鍵,值對的數組,或者你只是想打印出來,看起來像一個關聯數組? – jonhopkins

+0

請清除您的問題 –

+0

我正在嘗試創建一個數組 – user2417624

回答

3
$editWhat = array(); 
foreach($_POST as $key => $value) 
    $editWhat['field'.(count($editWhat)+1)] = $key; 
foreach($_POST as $value) 
    $editWhat['field'.(count($editWhat)+1)] = $value; 

將完成您所描述的內容。如果你不需要陣列的鑰匙,你可以做:

$editWhat = array_merge(array_keys($_POST), array_values($_POST)); 
+0

謝謝。那正是我需要的。我會在40秒內接受你的答案:-) – user2417624

+0

對於那個低估我的人:你能解釋一下爲什麼嗎?有沒有錯誤,或者我錯過了什麼? – Christoph

0

只需設置陣列值對應的鍵內環路:

$editWhat = array(); 

foreach($_POST as $key => $value) { 

    $editWhat[$key] = $value; 

} 

看到http://php.net/manual/en/language.types.array.php

+2

這等於'$ editWhat = $ _POST;'真棒! – Christoph

+0

嗨Louis ...我得到$ editWhat = array( 'key1'=> $ value1, 'key2'=> $ value2, );這不是我想...看看我的問題 – user2417624

2

也許我誤解,但試試這個讓你期望的數組:

$editWhat = array(); 
$count = count($_POST); 
foreach($_POST as $key => $value) { 
    $editWhat['field'.($key+1)] = $key; 
    $editWhat['field'.($key+$count+1)] = $value; 
} 
+0

添加第二個循環存儲的值,你得到我的+1;) – Christoph

+1

+ 1優化解決方案。 –

0
$editWhat=array(); 

foreach($_POST as $key => $value) { 

      $editWhat[$key] = $value;   

      } 
0

您可以使用array_keys()array_values()函數循環訪問數組的鍵和值,並使用兩個單獨的循環構造一個新數組。

0

試試這個。

foreach($_POST as $key=>$value){ 
    $keys[]=$key; 
    $values[]=$value; 
} 
foreach($keys as $editKey){ 
    $editWhat[]=$editKey; 
} 
foreach($values as $editValue){ 
    $editWhat[]=$editVlaue; 
} 
+1

爲什麼在循環它們之前存儲鍵和值?你可以使用'array_values()'和'array_keys()'或簡單地遍歷'$ _POST'並直接插入'$ editWhat'。 – Christoph

+0

謝謝,我每天都會學到新的東西。 – EliteTech

+0

這是正確的方法。保持 ;) – Christoph

0
$array = array(); 
$n = 1; 
foreach($_POST as $key => $value) { 
     $array["field".$n] = $key; 
     $n++; 
} 

foreach($_POST as $key => $value) { 
     $array["field".$n] = $value; 
     $n++; 
} 

print_r($array);