2011-10-08 67 views
1

我正在研究函數來檢查$ _POST是否設置。

下正常工作:

if (isset($_POST['einfo'])) { 
    $einfo = $_POST['einfo']; 
} else { $einfo = NULL; } 

回聲$ einfo;

這就是我想要做的功能:

function ifset($check) { 
     if (isset($_POST['$check'])) { 
    $check = $_POST['$check']; 
    } else { $check = NULL; } 
     return $check; 
} 

$einfo = ifset('einfo'); 

echo $einfo; 

但我沒有得到任何輸出。

+0

http://php.net/manual/en/language.variables.basics.php –

+0

我無法想象這應該如何。如果不調用函數ifset,因爲這完全不描述函數的實際功能。 – markus

+0

Tnx很多這幫了我! – Seltjoek

回答

5

你必須使用雙引號:

function ifset($check) 
{ 
    if (isset($_POST["$check"])) 
    { 
    $check = $_POST["$check"]; 
    } 
    else 
    { 
    $check = NULL; 
    } 
    return $check; 
} 

但實際上,你可以忽略它們。

+0

+1(太)。雖然AurelioDeRosa是正確的顯示錯誤的輸出,你的答案證明,該功能本身也是錯誤的。 – GolezTrol

+4

根本不要使用雙引號。這只是一個變量。 –

+0

Tnx很快的答覆,這幫了我一把! – Seltjoek

1

如果結果爲NULL,那麼當您執行回聲時,它將被「鑄造」爲空字符串,因此您什麼都看不到。

嘗試使用var_dump而不是echo

而且您還沒有使用雙引號讓php解釋變量。

+0

就像'假'一樣。如果您需要輸出這樣的調試值,請使用'var_dump'。 – GolezTrol

+0

是的,假當然會做同樣的;) –

0

NULL表示空,所以你什麼都看不到。如果你想看到的東西,試試這個:

function ifset($check) { 
if (isset($_POST["$check"])) { 
$check = $_POST["$check"]; 
} else { 
$check = "Empty"; 
} 
return $check; 
} 
+0

誰加了-1 ... – Olli

0

你需要閱讀一個PHP手冊!

$_POST['$check'] -> string '$check' is as you write 
$_POST["$check"] -> string "$check" is a string that contain the $check variable 
$_POST[$check] -> equivalent to previous 


$check = 'some test'; 
echo "$check"; // outputs -some test- 
echo $check; // outputs -some test- 
echo '$check'; // outputs $check 

希望這有助於

+0

是的,謝謝!我現在得到它:) – Seltjoek

+0

這顯然是正確的,但評論「你需要閱讀一個PHP手冊」是不需要的。這可能是幾乎所有問題的答案,有時你不知道你在找什麼。 –

0

,可以用更少的代碼來完成:

function ifset($check) { 
    if (isset($_POST[$check])) { 
     return $_POST[$check]; 
    } 
    return NULL; 
} 

,並根據什麼樣的價值觀,你對待和使用PHP 5.3+,你可以使用:

function ifset($check) { 
    return $_POST[$check] ?: NULL; // ternary operator 
}