我的表字段状态为NULL [默认],或者它是0或1.然后我分配给PHP var $ status.当值为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';
}
Run Code Online (Sandbox Code Playgroud)
然后显示图像灰色,绿色或根本没有我正在尝试这个:
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='' />";
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我不需要围绕价值观,但我试图将一切都归结为强制有效的比较.可能没有人需要尝试解开我的代码; 但要阐明如何保持NULL和0分开.就像我在这里缺少一些基本的东西.顺便说一句,当我用PHP var填充js var时,它获得正确的值; 他们只是不按照我需要他们的比较.
想法?
你的问题是程序顺序或不检查类型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
}
Run Code Online (Sandbox Code Playgroud)
因为你不会打字与检查===的0空将用于该条件返回true.
请参阅此沙箱并使用示例 $status = null;
http://sandbox.onlinephpfunctions.com/code/1f3dd9d83d0026aa0f682b61bed2ba858ae285aa
输出:
'0'
Run Code Online (Sandbox Code Playgroud)
如果你把它改成这个
if ($status == 1) {
$status = '1';
} else if ($status === 0) {
$status = '0';
} else if ($status === NULL) {
$status = 'NULL';
}
Run Code Online (Sandbox Code Playgroud)
正如您在此处所看到的,使用相同的设置 $status
http://sandbox.onlinephpfunctions.com/code/d86b0c60c06338d2d6ee1c1fa9d3fa7e08a22663
输出
'NULL'
Run Code Online (Sandbox Code Playgroud)
修复它的另一种方法是切换它们,使其更具体.
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';
}
Run Code Online (Sandbox Code Playgroud)
然后0将捕获false以及0但不null作为块上面,会先抓住它.你可以在这里看到最后一个
http://sandbox.onlinephpfunctions.com/code/3028f5826dcede29b14dd8cfc03618ea5830c12c
哪个也输出
'NULL'
Run Code Online (Sandbox Code Playgroud)
干杯!
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |