私はフォームを作成していますが、その一部はオプションです。このフォームの出力を表示するには、POST 変数に内容があるかどうかを確認できるようにしたいと考えています。存在する場合、スクリプトは、POST 変数と同じ値と名前を持つ新しい通常の PHP 変数を作成する必要があります。そうでない場合は、同じ名前で値が「未定義」の新しい通常の PHP 変数を作成する必要があります。これは私がこれまでに持っているものです:
function setdefined($var)
{
if (!$_POST[$var] == "")
{
$$var = $_POST[$var]; // This seems to be the point at which the script fails
}
else
{
$$var = "Not defined";
}
}
setdefined("email");
echo("Email: " . $email); // Provides an example output - in real life the output goes into an email.
このスクリプトはエラーをスローせず、値が指定されていない "Email: " を返すだけです。これは、関数内で可変変数を使用する方法に問題があると思います。以下のコードは意図したとおりに機能しますが、あまり実用的ではありません。
function setdefined(&$var)
{
if (!$_POST[$var] == "")
{
$var = $_POST[$var];
}
else
{
$var = "Not defined";
}
}
$email = "email"; // As the var parameter is passed by reference, the $email variable must be passed as the function argument
setdefined($email);