微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – for循环使用isset()!= null – 为什么?

for($i=0; isset($_POST['key_str'][$i]) != null; $i++)
{
    // some PHP here
}

我在工作中继承了一些遗留代码,我在几个地方找到了上面的for()循环.我多年来一直在编写PHP,Javascript和Python,从未见过这样的东西.我的直觉告诉我,写这个遗留代码的人来自不同的语言.可能还没有很有经验.

问题:

1)isset($_ POST [‘key_str’] [$i])是否比count更好($_ POST [‘key_str’])?

2)这是否类似于您通常在其他语言中找到的语法?如果是这样,哪种语言?

解决方法:

isset()一个返回布尔值的语言结构,因此它永远不能为空.但是,comparison使用等于运算符(==)而不是相同的运算符(===),因此type juggling applies

Type of Operand 1   Type of Operand 2   Result
bool or null        anything            Convert both sides to bool

…和null casts到布尔值false所以:

true  != null → true  != false → true
false != null → false != false → false

因此循环等效于:

for($i=0; isset($_POST['key_str'][$i]); $i++){}

换句话说,!= null是多余的并且损害可读性.

现在,方括号用于按键读取数组元素或按字节偏移读取字符串.因为$_POST是一个外部变量,所以循环实际上可以同时执行 – 我认为前者是预期的.如果没有进一步的背景,就不可能说出它的意图或者如何重写它,但我怀疑它是foreach()的一个复杂的替代品.

那么回答你的问题:

>这无关紧要.他们完全不同的事情.
>这是基于意见的(对我来说,这是一般人不熟悉编程的语法.)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐