2013-01-04 195 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 ; 

這不僅醜陋,而且可能不安全。