2011-11-12 7 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]; 
    } 
} 
?> 

私は大嫌いですか?または、配列がどのように働いているのか誤解していますか?

+0

'var_dump($ _ POST)'を試してください。 – str

+0

$ _POSTは他の配列と同様の配列です。 –

答えて

6

あなたはどのように誤解しているのですかin_arrayin_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))'を試してみてください。 –