php我需要null为null,零为零

  • 本文关键字:null php php null
  • 更新时间 :
  • 英文 :


我的表字段状态为NULL[默认值],或者为0或1。然后我将var$状态分配给PHP。当值为NULL时,我不想显示图标,当值为0时,显示灰色复选图像,当值是1时,显示绿色复选图像。

问题是,NULL值显示灰色校验图像,0不显示校验图像。不知何故,NULL和0是相似的,但只是在一个方向上。我的意思是,无论我如何有条件地测试var是否为null,不是null,null但不是零,它们都会被错误地解释。这令人困惑。必须有一种简单直接的方法来保持NULL和0的独立性。我得到了价值:

$status = $Card['status']; //from above array.
if ($status == 1) {
$status = '1';
} else if ($status == 0) {
$status = '0';
} else if ($status === NULL) {
$status = 'NULL';
} 

然后要显示灰色、绿色或根本没有的图像,我正在尝试这个:

if ($status == '1') {
echo "<img src='../images/status_check_green.png' />";
} else if ($status == '0') {
echo "<img src='../images/porc_check_gray.png' />";
} else if ($status == 'NULL') {
echo "<img src='' />";
}
}

我知道我不需要值周围的",但我正在尝试将所有内容文字化,以强制进行有效的比较。可能不需要有人试图破解我的代码;而是为了阐明如何保持NULL和0分离。我好像错过了一些基本的东西。顺便说一句,当我用PHP变量填充js变量时,它会得到正确的值;他们只是没有像我需要的那样遵循比较。

想法?

HI您的问题是程序顺序还是不类型检查0(取决于您是否想要捕获false)

if ($status == 1) {
$status = '1';
} else if ($status == 0) {
$status = '0';  //<--- this runs on null because (null == 0) is true
} else if ($status === NULL) {
$status = 'NULL'; //<--- this block is un-reachable
} 

因为0为null的===的非类型检查将在该条件下返回true。

请参阅此沙箱和使用$status = null;的示例

http://sandbox.onlinephpfunctions.com/code/1f3dd9d83d0026aa0f682b61bed2ba858ae285aa

输出:

'0'

如果你把它改成这个

if ($status == 1) {
$status = '1';
} else if ($status === 0) {
$status = '0';  
} else if ($status === NULL) {
$status = 'NULL';
} 

正如您在这里看到的,使用与$status相同的设置

http://sandbox.onlinephpfunctions.com/code/d86b0c60c06338d2d6ee1c1fa9d3fa7e08a22663

输出

'NULL'

另一种解决方法是切换它们,使更具体的一个优先。

if ($status == 1) {
$status = '1';
} else if ($status === NULL) {
$status = 'NULL';
} else if ($status == 0) {  //I would prefer if(!$status){ but I'm lazy
$status = '0';  
}

那么0将捕获false以及0,但不捕获null,因为它上面的块将首先捕获它。你可以在这里看到最后一个

http://sandbox.onlinephpfunctions.com/code/3028f5826dcede29b14dd8cfc03618ea5830c12c

也输出

'NULL'

干杯!

相关内容

  • 没有找到相关文章

最新更新