0

チェックボックスがたくさんあるフォームを処理しています。すべての必須フィールドが入力されているかどうかのチェックでエラーが発生すると、指定されたデータ (テキストとチェックボックス) が事前に入力されたフォームが再び表示されます。私のチェックボックスは 4 つの異なるトピックに割り当てることができるので、このトピックごとに配列を埋めます。

基本的に、各トピックの $_POST データを取得し、そこから配列を作成します。トピックのチェックボックスが満たされていない場合は、空の配列を作成する必要があります。これは、チェックボックスを事前にチェックするために配列が必要なためです (in_array を使用して、チェックボックスの値が設定されているかどうかを確認します)。

私はphpにかなり慣れていないので、この目的のために関数を作成しようとしました(通常の方法でうまくいきます)。

私の機能:

function fill_checkboxarray($topic)
{
    if(!empty($_POST["".$topic.""]))
    {
        ${$topic} = $_POST["".$topic.""];
    }
    else
    {
        ${$topic} = array();
    }
    return ${$topic};
}

私のスクリプトでは、関数に渡される変数にトピックの名前を設定します。

$topic = "saunterstuetzt";
fill_checkboxarray($topic);

$topic = "sageplant";
fill_checkboxarray($topic);

$topic = "osunterstuetzt";
fill_checkboxarray($topic);

$topic = "osgeplant";
fill_checkboxarray($topic);

次の $_POST 配列を取得します。

$_POST["saunterstuetzt"]
$_POST["sageplant"]
$_POST["osunterstuetzt"]
$_POST["osgeplant"]

次の出力が必要です: (POST データで埋められた、または空の配列)

$saunterstuetzt
$sageplant
$osunterstuetzt
$osgeplant

どういうわけか、変数配列名が機能しません...「in_array() [function.in-array]: 2番目の引数のデータ型が間違っています」というエラーが表示されるので、配列を作成しないと思います...

事前にご協力いただきありがとうございます。ラングステ

4

2 に答える 2

2

私はphpにかなり慣れていないので、この目的のために関数を作成しようとしました。

可変変数を使用するべきではありません。

これは、よりクリーンで再利用可能なアプローチです。

function get_post_param($param, $default = null) {
  return empty($_POST[$param]) ? $default : $_POST[$param];
}

$saunterstuetzt = get_post_param("saunterstuetzt", array());
$sageplant = get_post_param("sageplant", array());
$osunterstuetzt = get_post_param("osunterstuetzt", array());
$osgeplant = get_post_param("osgeplant", array());
于 2013-05-10T13:01:51.770 に答える
0

関数の戻り値として特定の名前の変数を返すことはできません!

于 2013-05-10T13:01:55.187 に答える