$ _POSTのPHPのin_array

私はこれがあまりにも漠然とした質問ではないことを願っています。

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 配列の仕組みを誤解していますか?

1
追加された
ビュー: 1
var_dump($ _ POST)を試してください。
追加された 著者 str,
$ _POSTは他の配列と同様の配列です。
追加された 著者 Dmitry Teplyakov,

2 答え

in_array の仕組みを誤解しています。 in_array は値をチェックします。あなたはキーをチェックしたい。

isset を使用するか、 array_key_exists を使用できます(値が null のアイテムが存在する場合はtrueを返します)。

foreach ($textfield_array as $textfield) {
    if (isset($_POST[$textfield])) {
        $an_array[$textfield] = $_POST[$textfield];
    }
}
6
追加された
それに乾杯。私はin_arrayの仕組みを誤解していました!私をまっすぐにしてくれてありがとうR
追加された 著者 Richard Sweeney,

array_intersect 関数を使用します。

$an_array = array_intersect(array_keys($_POST), $textfield_array);
1
追加された
これは、OPが当初要求したように連想配列ではなく、キー配列を作成します。 array_intersect_key($ _ POST、array_flip($ textfield_array))
追加された 著者 Casey Chu,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

招待状へのリンク: https://t.me/joinchat/B2gdSlA_dh1-BQtEKA2dfw このグループではPHPについて話します。 パートナー:kotaeta.com