Php 检查是否为空'';在功能上?
我正在运行下面的函数,想检查一个值是NULL还是“”,但它对这两个值的反应似乎是一样的。这将打印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'; } }
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