2013-01-04 148 views
1

我正在制作一个表格,其中一些是可选的。为了显示这个表单的输出,我希望能够检查一个POST变量是否有内容。如果是这样,脚本应该创建一个新的普通PHP变量,其值和名称与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. 

这个脚本不抛出任何错误,而只是返回“电子邮件:”没有指定值。我认为这是我在函数内使用变量变量的一个问题;下面的代码按预期工作,但不太实用:

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); 
+3

http://php.net/manual/zh/language.variables.scope.php – PeeHaa

+0

http://php.net/manual/en/book.array.php – PeeHaa

+0

http://php.net/manual /en/function.return.php – PeeHaa

回答

2

你为什么不去做这样:

function setdefined($var) 
{ 
    if (isset($_POST[$var]) && !empty($_POST[$var])) 
    { 
     return $_POST[$var]; 
    } 
    else 
    { 
     return "Not defined"; 
    } 
} 
$email = setdefined('email'); 
echo("Email: " . $email); 

你在第一个例子中创建的变量只在函数内部可用

+2

希望你不介意编辑... – PeeHaa

+0

哎呀,我想我改写它?不,我根本不介意。 –

+0

它发生NP :) – PeeHaa

0

您可以使可能是恶意用户提交的未知变量(全局变量)。为此,请将其添加到函数的开头:

global $$var ; 

这不仅丑陋,而且可能不安全。