php - 在 PHP 5.5.9 的 PHP 开关中使用常量

标签 php switch-statement php-5.5

Ubuntu 14.04 上安装 PHP 5.5.9 之后(Trusty Tahr),我在 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 (constant("PHP_OS"))

关于php - 在 PHP 5.5.9 的 PHP 开关中使用常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25645533/

相关文章:

Java 7 新功能 Switch 案例中的字符串数据类型

C 开关 "default"未按所需方式工作

php - 在 PHP 中从 Json 中提取关键元素

php - 我如何在 cakephp 3 的上下文中解决此 SQLSTATE 错误?

谁能解释这个 C 程序的输出?

php - Zend OPCache - opcache.enable_cli 1 还是 0?它有什么作用?

ubuntu - 从 mysqldump 恢复 MySQL 架构

php - 如何对 Apache 帐户运行 Linux 'at' 命令?

javascript - 如何使用php显示优惠券代码

php - "Class ' XMLWriter ' not found"php 错误 |缺少 php55w-xml-5.5.24-1.w6.x86_64.rpm