在PHP 5.5.9中的PHP开关中使用常数

问题描述 投票:4回答:1

[在Ubuntu 14.04(Trusty Tahr)上安装PHP 5.5.9之后,我发现了一个带有switch语句和PHP_OS常量的奇怪行为。

我假设在PHP 5.5.9中,switch语句也在检查相同的类型(===)?

或者这是PHP错误吗?

echo PHP_OS; // Linux
$os = PHP_OS;

switch (PHP_OS) {
    case "WINNT":
        echo 'Windows';
        break;
    case "Linux":
        echo 'Linux';
        break;
    default:
        echo 'Default';
        break;
}
// Default

switch ((string) PHP_OS) {
    case "WINNT":
        echo 'Windows';
        break;
    case "Linux":
        echo 'Linux';
        break;
    default:
        echo 'Default';
        break;
}
// Default

switch ($os) {
    case "WINNT":
        echo 'Windows';
        break;
    case "Linux":
        echo 'Linux';
        break;
    default:
        echo 'Default';
        break;
}
// Linux
php switch-statement php-5.5
1个回答
2
投票

PHP开关使用==之类的松散比较,因此应该匹配。

您可以尝试:

switch (constant("PHP_OS"))
© www.soinside.com 2019 - 2024. All rights reserved.