Php 检查是否为空'';在功能上?

Php 检查是否为空'';在功能上?,php,null,Php,Null,我正在运行下面的函数,想检查一个值是NULL还是“”,但它对这两个值的反应似乎是一样的。这将打印C1C2。我如何让它打印B1C1C2?我应该使用isset()吗 function title($a = NULL, $b = NULL, $c = NULL) { if( $a != NULL ) { echo 'A1'; if( $a != '' ) { echo 'A2'; } }

我正在运行下面的函数,想检查一个值是NULL还是“”,但它对这两个值的反应似乎是一样的。这将打印
C1C2
。我如何让它打印
B1C1C2
?我应该使用
isset()

function title($a = NULL, $b = NULL, $c = NULL) {
    if( $a != NULL )
    {
        echo 'A1';
        if( $a != '' )
        {
            echo 'A2';
        }
    }
    if( $b != NULL )
    {
        echo 'B1';
        if( $b != '' )
        {
            echo 'B2';
        }
    }
    if( $c != NULL )
    {
        echo 'C1';
        if( $c != '' )
        {
            echo 'C2';
        }
    }
}

title(NULL, '', 'C');

如果只检查变量的值,则无论是
null
还是空字符串(
'
):

您还需要检查类型:

null === ''; // (false)

因此,不是:

if( $a != NULL )
运行:

它还将检查类型<代码>'是
字符串
-不是
null
类型


重新排列的功能:

function title($a = NULL, $b = NULL, $c = NULL) {
    if( $a !== NULL )
    {
        echo 'A1';
        if( $a !== '' )
        {
            echo 'A2';
        }
    }
    if( $b !== NULL )
    {
        echo 'B1';
        if( $b !== '' )
        {
            echo 'B2';
        }
    }
    if( $c !== NULL )
    {
        echo 'C1';
        if( $c !== '' )
        {
            echo 'C2';
        }
    }
}

title(NULL, '', 'C'); // outputs: B1C1C2
小心点,因为

if(null == 0) echo "yes"; else echo "nope"; //prints yes
if(null === 0) echo "yes"; else echo "nope"; //prints no
因此,为了避免此问题,请始终使用三重等于(==或!==)而不是双等于(==或!=)

但最合适的方法是使用“is_null()”PHP内置函数,该函数返回true或false

if(is_null(0)) echo "yes"; else echo "nope"; //prints nope
所以我们有

function title($a = NULL, $b = NULL, $c = NULL) {
    if(!is_null($a)) // using is_null builtin function
        echo 'A1';
        if($a !== '')// not !=, because 0!='' is false
            echo 'A2';
    if(!is_null($b))
        echo 'B1';
        if($b !== '')
            echo 'B2';
    if(!is_null($c))
        echo 'C1';
        if($c !== '')
            echo 'C2';
}

title(NULL, '', 'C'); // prints B1C1C2

只要使用
!isnull($a)
!空($a)
@GrumpyCrouton也许你的意思是
为空()
if(is_null(0)) echo "yes"; else echo "nope"; //prints nope
function title($a = NULL, $b = NULL, $c = NULL) {
    if(!is_null($a)) // using is_null builtin function
        echo 'A1';
        if($a !== '')// not !=, because 0!='' is false
            echo 'A2';
    if(!is_null($b))
        echo 'B1';
        if($b !== '')
            echo 'B2';
    if(!is_null($c))
        echo 'C1';
        if($c !== '')
            echo 'C2';
}

title(NULL, '', 'C'); // prints B1C1C2