2011-11-12 62 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))' –