Home  >  Article  >  Backend Development  >  if($r != '.' && $r != '..')为何不能写成if($r != ('.'&&'..'))

if($r != '.' && $r != '..')为何不能写成if($r != ('.'&&'..'))

WBOY
WBOYOriginal
2016-06-06 20:17:511254browse

如题,请问问什么?有其他的简写方式吗

回复内容:

如题,请问问什么?有其他的简写方式吗

没有简写的方式。

在强类型语言里,&&要求两边的操作数一定要是Boolean型,在弱类型语言里面,&& 会试图把两边的操作数转换成Boolean型(但是有些返回值并不是Boolean类型的)。因此从类型上来说这两者都是不等价的。

从语言规定的语法来讲似乎也不应该规定这样的写法,因为后面这种形式有着实在的意义。如果规定为等价,那么就需要多规定一条额外的语法。而这种规定似乎又不会带来明显的好处。尤其是在弱类型语言里后面这种写法也有其中的意义。

<code>in_array($r, ['.', '..']);</code>

两个值情况下还看不出来。如果与多个值比较,这么写绝对比一大堆!=&&简洁。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn