【发布时间】:2015-11-05 13:56:56
【问题描述】:
我需要检查传递的变量是否为字符串类型,并且它不为空。我有以下功能:
function isNonEmptyStr($var)
{
if(isset($var)) {
if(is_string($var)) {
if(strlen($var) > 0) {
return true;
}
}
}
return false;
}
我期望的结果:
echo(isNonEmptyStr(''));// false
echo(isNonEmptyStr(' '));// true
echo(isNonEmptyStr('a'));// true
echo(isNonEmptyStr('1'));// true
echo(isNonEmptyStr(1));// false
echo(isNonEmptyStr(0));// false
echo(isNonEmptyStr(0.0));// false
echo(isNonEmptyStr(0.1));// false
echo(isNonEmptyStr(array()));// false
echo(isNonEmptyStr(new myObj()));// false
echo(isNonEmptyStr(true));// false
echo(isNonEmptyStr(false));// false
echo(isNonEmptyStr(null));// false
该功能运行良好。
我的问题:有没有办法在不影响结果的情况下提高函数性能?
我说的是“微优化”(我非常频繁地使用这个功能)。
编辑:
对于那些询问的人:
echo(isNonEmptyStr(0));// should return false, because it's not a string
echo(isNonEmptyStr(1));// should return false, because it's not a string
echo(isNonEmptyStr('0'));// should return true, because it's a non-empty string
echo(isNonEmptyStr('1'));// should return true, because it's a non-empty string
注意: 一个非空字符串 = 如果用 strlen() 函数测试它会返回 > 0
【问题讨论】:
-
如果
isset(),你可以摆脱它,因为它总是由你的函数定义设置 -
如果你已经知道它是一个字符串,可以使用
!empty($var)。 -
如果你使用它来获取和发布变量,它们将永远是字符串。
-
这不是更适合代码审查吗?
-
在这个线程中有多少人do not understand
empty...
标签: php performance micro-optimization