2011-10-08 143 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 
} 
相关问题