如果我想检查变量,我需要这样做:
if ( $i != '' || $i != 0 || $i != NULL ) {
// ...do some code
}
这 3 个检查是否可以通过某些 php 函数或技巧以某种方式合并为 1 个?
如果我想检查变量,我需要这样做:
if ( $i != '' || $i != 0 || $i != NULL ) {
// ...do some code
}
这 3 个检查是否可以通过某些 php 函数或技巧以某种方式合并为 1 个?
if (!empty($i)) {
// ... do some code
}
他们实际上都是false
y。所以你可以做
if(!$i) {
}
http://php.net/manual/en/language.types.boolean.php
我可能应该详细说明为什么 OP 有一些不好的假设。PHP 将评估的内容列表false
很长
转换为布尔值时,以下值被视为 FALSE:
- 布尔值 FALSE 本身
- 整数 0(零)
- 浮点数 0.0(零)
- 空字符串和字符串“0”
- 一个元素为零的数组
- 特殊类型 NULL(包括未设置的变量)
- 从空标签创建的 SimpleXML 对象
这就是等效性发挥作用的地方。这是一个比较运算符。OP有这个
if ( $i != '' || $i != 0 || $i != NULL )
这三个实际上是同一个测试。拿这个代码
$i = 0;
if($i == '') {
echo 'true';
}
if($i == 0) {
echo 'true';
}
if($i == NULL) {
echo 'true';
}
这三个声明都会回响。因此,如果您想知道$i
是实际NULL
还是false
相反0
(并且某些函数将返回两者),您必须使用不同的运算符。===
用于查看两者是否相等而不是简单相等。
$i = 0;
if($i == NULL) {
echo 'true'; //This will succeed
}
if($i === NULL) {
echo 'true'; //This will NOT succeed
}