小编sam*_*ave的帖子

为什么第二个静态变量赋值不是第一个生效?

function track_times() {
static $i = 0;
$i++;
static $i = 5;
return $i;
}

echo track_times() . "\n";
echo track_times() . "\n";
Run Code Online (Sandbox Code Playgroud)

结果是:

6
7
Run Code Online (Sandbox Code Playgroud)

我知道人们不会static以这种方式使用变量,只是无法解释结果.结果意味着第二个赋值生效,但$i在赋值之前自行递增,那么为什么第一次调用函数会返回6?

php static static-variables

6
推荐指数
1
解决办法
38
查看次数

在进行==和===比较时,变量的顺序是否重要?

在比较之后=====进行比较时放置变量真的很重要吗?

if (null == $var) {

}

if ($var == null) {

}
Run Code Online (Sandbox Code Playgroud)

我经常看到编码员更喜欢这种方式,是不是速度差异?

更新:

对不起,我没有做出清楚我的问题,我想知道是不是之间的不同=====,但这样的表达式null == $var$var == null,所以我已经改变了代码示例.


结论:

没有功能或性能差异.有些人认为这是最佳做法或仅仅是编码风格.BTW它有一个很酷的名字:尤达条件:)

仅供参考:PHP错误消息使用此样式,例如

PHP Fatal error:  Cannot use isset() on the result of an expression (you can use "null !== expression" instead)
Run Code Online (Sandbox Code Playgroud)

不知道为什么这个问题被标记为重复(3个不同的等于)不是(' = = $ $ var'和'$ var === false'之间有什么区别?)

php comparison-operators

3
推荐指数
1
解决办法
3083
查看次数