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 举报,一经查实,本站将立刻删除。