首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP If then和switch语句不工作

PHP If then和switch语句不工作
EN

Stack Overflow用户
提问于 2012-09-02 12:40:56
回答 3查看 210关注 0票数 1

好的,首先,这是一个非常特殊的问题。我在PHP上工作了很长一段时间,我不知道为什么会发生这种情况。

我有一个函数adminUpdate。此函数将返回true。我将其设置为总是返回true以进行测试。

然后我让函数取这个结果。

代码语言:javascript
复制
static function result2JSON($result,$options = array()) {

        if($result == "permission") {
            echo "permission";
        }

        if($result == true) {
            echo "true";
        }


        switch ($result) {
            case 'permission':
                die($result."xxx permission");
                $json = self::setJSON("Permission");
                break;
            case 'exist':
                $json = self::setJSON("Exist");
                break;
            case false:
                $json = self::setJSON("Error");
                break;
            case "":
                $json = self::setJSON("Error");
                break;
            case 1 :
                $json = self::setJSON("OK");
                break;
            case true:
                $json = self::setJSON("OK");
                break;
            default:
                $json = self::setJSON("OK");
                break;
        }


        $json = array_merge($json,$options);


        return $json;

    }

这些"Echo“用于测试此案例。因此,在被此函数采用之前,$result总是= true。

但这是我得到的输出:

代码语言:javascript
复制
permissiontrueResult = 1 IN permission section

这意味着$result = Permission,然后是== true,然后是开关上的== "permission“。为什么会这样呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-02 12:48:31

您可能希望使用身份检查===,而不是检查等价性。

在php中,非空字符串被解释为true。

代码语言:javascript
复制
$result = "permission";
if($result)
     echo 'String interpreted as true';

看看php.net (Short) http://php.net/manual/en/language.types.boolean.php上的布尔页面和PHP比较运算符页面...http://www.php.net/manual/en/language.operators.comparison.php

票数 2
EN

Stack Overflow用户

发布于 2012-09-02 12:47:02

如果您尝试将包含内容的字符串视为布尔值,则它们的计算结果为true。(好的,字符串"0“的计算结果为False。php很奇怪。)

所以,如果你想看看一个变量是否真的是真的,你必须使用一个同样检查类型的比较:

代码语言:javascript
复制
if ($result === "permission") { ... }

if ($result === True) { ... }
票数 1
EN

Stack Overflow用户

发布于 2012-09-02 12:47:11

您应该用===替换所有出现的==

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12233463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档