比较 PHP 中的字符串,不包括 Null 或空值
Compare strings in PHP excluding Null or empty values
我有一个关于在 PHP.
中比较字符串的简单问题
我想知道两个字符串(也适用于任何其他类型)是否相等,但我想排除比较的空值或空值,所以,我这样做:
if (!empty($var) && $var == $varToCompare) {
//do stuff
}
它工作正常,但我想知道是否存在某些运算符或函数可以避免 empty()
部分。
我的背景:
我想以一般方式了解这一点,但这是我需要澄清的背景。
我有两个或多个变量,我需要将它们与数据库中的变量进行比较,但是如果我的数据库中有一个 NULL
并且我的 var 也是 NULL
(或空字符串)我希望 false
。如果两个字符串是 NULL
或类似 ""
的字符串,即使使用 ===
运算符,我也会收到 true
。看例子:
$myVars = $this->getArrayOfVars();
$var1 = $myDB->getVar1();// could be null or ""
$var2 = $myDB->getVar2();// could be null or ""
if ((!empty($var1) && $var1 == $myVars[1]) || (!empty($var2) && $var2 == $myVars[2])) {
//do stuff
// I just enter here when the strings are equal, but avoiding the null or empty values
}
我查看了文档,但没有找到任何内容。有人知道可以执行此操作的函数吗?
试试 is_null()
和 strcmp()
即,
if(strcmp($var,"")!=0 || is_null($var)){//strcmp returns 0 when strings are equal
}
为什么不使用严格比较?喜欢$one === $two
?如果其中一个是字符串而另一个不是,它将不起作用。 Link: http://php.net/manual/en/language.operators.comparison.php
只需将@符号放在字符串前面而不是empty()
if (@$var && $var == $varToCompare) {
//do stuff
}
$myVars = $this->getArrayOfVars();
$var1 = $myDB->getVar1();// could be null or ""
$var2 = $myDB->getVar2();// could be null or ""
if ((@$var1 && $var1 == $myVars[1]) || (@$var2 && $var2 == $myVars[2])) {
//do stuff
// I just enter here when the strings are equal, but avoiding the null or empty values
}
最佳做法是制作您自己的函数:
/** return false if any parameter is empty() or $var1 !== $var2 **/
function strictlyEqualAndNotNull($var1, $var2) {
return (!empty($var1) && $var1 === $var2);
}
给出:
$myVars = $this->getArrayOfVars();
$var1 = $myDB->getVar1();// could be null or ""
$var2 = $myDB->getVar2();// could be null or ""
if (strictlyEqualAndNotNull($var1, $myVars[1]) ||
strictlyEqualAndNotNull($var2, $myVars[2])) {
// do stuff
// You will enter here when the strings are equal, but avoiding the null or empty values
}
我有一个关于在 PHP.
中比较字符串的简单问题我想知道两个字符串(也适用于任何其他类型)是否相等,但我想排除比较的空值或空值,所以,我这样做:
if (!empty($var) && $var == $varToCompare) {
//do stuff
}
它工作正常,但我想知道是否存在某些运算符或函数可以避免 empty()
部分。
我的背景:
我想以一般方式了解这一点,但这是我需要澄清的背景。
我有两个或多个变量,我需要将它们与数据库中的变量进行比较,但是如果我的数据库中有一个 NULL
并且我的 var 也是 NULL
(或空字符串)我希望 false
。如果两个字符串是 NULL
或类似 ""
的字符串,即使使用 ===
运算符,我也会收到 true
。看例子:
$myVars = $this->getArrayOfVars();
$var1 = $myDB->getVar1();// could be null or ""
$var2 = $myDB->getVar2();// could be null or ""
if ((!empty($var1) && $var1 == $myVars[1]) || (!empty($var2) && $var2 == $myVars[2])) {
//do stuff
// I just enter here when the strings are equal, but avoiding the null or empty values
}
我查看了文档,但没有找到任何内容。有人知道可以执行此操作的函数吗?
试试 is_null()
和 strcmp()
即,
if(strcmp($var,"")!=0 || is_null($var)){//strcmp returns 0 when strings are equal
}
为什么不使用严格比较?喜欢$one === $two
?如果其中一个是字符串而另一个不是,它将不起作用。 Link: http://php.net/manual/en/language.operators.comparison.php
只需将@符号放在字符串前面而不是empty()
if (@$var && $var == $varToCompare) {
//do stuff
}
$myVars = $this->getArrayOfVars();
$var1 = $myDB->getVar1();// could be null or ""
$var2 = $myDB->getVar2();// could be null or ""
if ((@$var1 && $var1 == $myVars[1]) || (@$var2 && $var2 == $myVars[2])) {
//do stuff
// I just enter here when the strings are equal, but avoiding the null or empty values
}
最佳做法是制作您自己的函数:
/** return false if any parameter is empty() or $var1 !== $var2 **/
function strictlyEqualAndNotNull($var1, $var2) {
return (!empty($var1) && $var1 === $var2);
}
给出:
$myVars = $this->getArrayOfVars();
$var1 = $myDB->getVar1();// could be null or ""
$var2 = $myDB->getVar2();// could be null or ""
if (strictlyEqualAndNotNull($var1, $myVars[1]) ||
strictlyEqualAndNotNull($var2, $myVars[2])) {
// do stuff
// You will enter here when the strings are equal, but avoiding the null or empty values
}