PHP:切换奇怪的行为

man*_*umx 3 php logic

可能重复:
PHP表示两个不同的字符串是相同的

我有一个问题是在切换案例指令中理解导致这种奇怪行为的原因.

代码是这样的:

<?php
$myKey = "0E9";

switch ($myKey) {
    case "0E2":
        echo "The F Word";
        break;
    case "0E9":
        echo "This is the G";
        break;
    default:
        echo "Nothing here";
        break;
}
?>
Run Code Online (Sandbox Code Playgroud)

这条指令的结果应该是G

好吧,不是这样.总是返回F字

如果我们将0E9左指令反转为开头并尝试找到值0E2

<?php
$myKey = "0E2";

switch ($myKey) {
    case "0E9":
        echo "The G String";
    break;
    case "0E2":
        echo "The F Word";
        break;       
    default:
        echo "Nothing here";
        break;
}
?>
Run Code Online (Sandbox Code Playgroud)

现在总是返回这是G

0E20E9值不被解释为文本?这些价值观是保留的?

有人可以解释这种行为吗?

xda*_*azz 5

"0E2" == "0E9"true因为它们是数字字符串.

注意:开关使用松散的比较.

检查这个问题:PHP表示两个不同的字符串是相同的.