2011-11-12 102 views
1

我希望這不是一個太模糊的問題,但是在這裏。

我想循環訪問存儲在textfield_array中的值並查看它們是否與$_POST陣列中的任何鍵匹配。如果他們這樣做,我想將它們分配給an_array陣列。

似乎沒有匹配,但我知道應該有!這是我的代碼:

<?php 
$an_array = array(); 

$textfield_array = array(
'item_no', 'button_text', 'text_field', 'drop_down_title' 
); 

foreach($textfield_array as $textfield){ 
    if(in_array($textfield, $_POST)){ 
    $an_array[$textfield] = $_POST[$textfield]; 
    } 
} 
?> 

我是不是很傻?或者誤解$_POST陣列的工作原理?!

+0

嘗試'var_dump($ _ POST)'。 – str

+0

$ _POST是一個像其他人一樣的數組。 –

回答

6

您誤會了in_array的工作原理。 in_array檢查值。你想檢查鑰匙。

您可以使用isset,也可以使用array_key_exists(如果項目的值爲null,則返回true)。

foreach ($textfield_array as $textfield) { 
    if (isset($_POST[$textfield])) { 
     $an_array[$textfield] = $_POST[$textfield]; 
    } 
} 
+0

爲此歡呼。我的確誤解了in_array的工作原理!謝謝你讓我變直! R –

1

使用array_intersect函數。

$an_array = array_intersect(array_keys($_POST), $textfield_array); 
+0

這創建了一組鍵,而不是OP最初要求的關聯數組。嘗試'array_intersect_key($ _ POST,array_flip($ textfield_array))' –