如果设置了var,我应该使用哪个函数进行测试?

时间:2010-03-19 15:05:19

标签: php

我有时会对使用其中的哪一个感到困惑,

说我有一个名为getmember($id)

的函数
function getmember($id)
{

// now this is the confusing part 
// how do i test if a $id was set or not set?

//solution 1
if(empty($id))
{
return false;
}


// solution 2

if(isset($id))
{
return false;
}

}

有时我不清楚,有时如果函数中的参数设置为function($var="")

然后我做

if($var ==="")
{
return false;
} 

下次isset ? empty ? or ===''时我应该使用什么?

3 个答案:

答案 0 :(得分:10)

在这里,您可以完整地分析哪些有效,何时有效:

<?
echo "<pre>";
$nullVariable = null;

echo 'is_null($nullVariable) = ' . (is_null($nullVariable) ? 'TRUE' : 'FALSE') . "\n";
echo 'empty($nullVariable) = ' . (empty($nullVariable) ? 'TRUE' : 'FALSE') . "\n";
echo 'isset($nullVariable) = ' . (isset($nullVariable) ? 'TRUE' : 'FALSE') . "\n";
echo '(bool)$nullVariable = ' . ($nullVariable ? 'TRUE' : 'FALSE') . "\n\n";

$emptyString = '';

echo 'is_null($emptyString) = ' . (is_null($emptyString) ? 'TRUE' : 'FALSE') . "\n";
echo 'empty($emptyString) = ' . (empty($emptyString) ? 'TRUE' : 'FALSE') . "\n";
echo 'isset($emptyString) = ' . (isset($emptyString) ? 'TRUE' : 'FALSE') . "\n";
echo '(bool)$emptyString = ' . ($emptyString ? 'TRUE' : 'FALSE') . "\n\n";

//note that the only one that won't throw an error is isset()
echo 'is_null($nonexistantVariable) = ' . (@is_null($nonexistantVariable) ? 'TRUE' : 'FALSE') . "\n";
echo 'empty($nonexistantVariable) = ' . (@empty($nonexistantVariable) ? 'TRUE' : 'FALSE') . "\n";
echo 'isset($nonexistantVariable) = ' . (isset($nonexistantVariable) ? 'TRUE' : 'FALSE') . "\n";
echo '(bool)$nonexistantVariable = ' . (@$nonexistantVariable ? 'TRUE' : 'FALSE') . "\n\n";
?>

输出:

is_null($nullVariable) = TRUE
empty($nullVariable) = TRUE
isset($nullVariable) = FALSE
(bool)$nullVariable = FALSE

is_null($emptyString) = FALSE
empty($emptyString) = TRUE
isset($emptyString) = TRUE
(bool)$emptyString = FALSE

is_null($nonexistantVariable) = TRUE
empty($nonexistantVariable) = TRUE
isset($nonexistantVariable) = FALSE
(bool)$nonexistantVariable = FALSE

当我在上面显示(bool)$variable时,就是如何在条件中使用它。例如,要检查变量是空还是空,您可以执行以下操作:

if (!$variable)
    echo "variable is either null or empty!";

但最好使用一个函数,因为它更具可读性。但这是你的选择。

另外,请检查the PHP type comparison table。这基本上就是我上面所做的,除了更多。

答案 1 :(得分:3)

如果您只想知道是否定义了变量,请使用isset()

如果您想查看它是否已初始化,请使用is_null()

如果您想将其值与其他值进行比较,请使用==

答案 2 :(得分:1)

不一样:

isset:确定变量是否已设置且不为NULL http://ch.php.net/manual/en/function.isset.php

empty:确定变量是否为空 http://ch.php.net/manual/en/function.empty.php

$ a === $ b:如果$ a等于$ b,则为TRUE,它们属于同一类型。 http://ch.php.net/manual/en/language.operators.comparison.php