【问题标题】:switch case ignoring conditions in php在php中切换大小写忽略条件
【发布时间】:2017-12-28 13:16:44
【问题描述】:

我正在使用开关来测试变量的值。
变量$sizeTotal 可以包含字符串或数字。在下面的示例中,我希望开关触发默认情况。
但是,每次都是第一个案例,我不知道为什么......

$sizeTotal = "test";
$extraCharges['2'] = 1000;

switch ($sizeTotal) {
    case ($sizeTotal < $extraCharges['2']):
        $var = 40;
        return $var;

    case ($sizeTotal >= $extraCharges['2']):  
        $var = 60;
        return $var;

    default:
        $var = 1000;
        return $var;
}

【问题讨论】:

  • 你用错了switch语句,它是用来检查一个变量的单个值,而不是一个条件。您可能想要使用能够检查条件的 else-if 构造。 php.net/manual/en/control-structures.switch.php
  • 字符串被转换为 0 并且 0 小于 1000。这就是为什么你的第一个条件为真。

标签: php switch-statement


【解决方案1】:

来自docs

如果将数字与字符串进行比较或比较涉及数字字符串,则每个字符串都将转换为数字并以数字方式进行比较。这些规则也适用于 switch 语句。当比较是 === 或 !== 时,类型转换不会发生,因为这涉及比较类型和值。

你在比较中放置一个字符串。

【讨论】:

    猜你喜欢
    • 2020-12-02
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    相关资源
    最近更新 更多