可以($ a == 1 && $ a == 2 && $ a == 3)评估为真吗?

Fra*_*erZ -1 php

这个问题类似于这里它的目的是为JavaScript,还催生了无数关闭分拆为各种不同的语言.我很好奇以下是否可以在PHP中评估为true:

($a == 1 && $a == 2 && $a == 3)
Run Code Online (Sandbox Code Playgroud)

为了进一步跟进,似乎简单的设置$a = true将产生所需的结果(这不是javascript的情况,因为类型转换在两种语言中的工作方式).一些答案(在javascript中)也可以使用===,所以在使用typechecking(===)的PHP中,以下内容是否会产生真实效果?

($a === 1 && $a === 2 && $a === 3)
Run Code Online (Sandbox Code Playgroud)

Tah*_*ksu 8

我刚试过这个:

$a = true;
echo ($a == 1 && $a == 2 && $a == 3);
Run Code Online (Sandbox Code Playgroud)

它回应了1.

由于类型转换而不是类型检查,1,2,3将被视为true与布尔值相比较.

回答编辑:不,不能做.

@FrankerZ评论的Hackish方法:

零字节字符= 0xFEFF

http://shapecatcher.com/unicode/info/65279

http://www.unicodemap.org/details/0xFEFF/index.html

$var  = "1";
$var = "2";
$ var = "3";

echo ($var  === "1" && $var === "2" && $ var === "3") ? "true" : "false";
Run Code Online (Sandbox Code Playgroud)

此代码这个字符,因为该名称运行$ var,并$var 似乎是有效的PHP编译器和此时,相应的字体,它可以被隐藏.它可以通过Windows 上的Alt+ 实现65279.

  • @FrankerZ让它变得更有趣,有一个`===`运算符. (2认同)