首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能使用这样的开关?

问为什么我不能使用这样的开关?
EN

Stack Overflow用户
提问于 2011-08-23 05:21:04
回答 4查看 169关注 0票数 2

我正在学习面向对象的PHP。我有几年的过程化经验,但我想让它更上一层楼。

总之,在我干净整洁的代码中,尝试了一些我学到的关于OOP的东西,我尝试了一些我以前从未尝试过的普通PHP Switch语句,在我看来,它像这样工作是非常合乎逻辑的,但它不起作用。

代码语言:javascript
复制
            switch(strtoupper($type)) {
            case "DELETE" || "UPDATE":
                $result['info'] = mysql_affected_rows($this->con);
                break;
            case "INSERT":
                $result['info'] = "Insert Successful";
                break;
            case "SELECT":
                $result['info'] = mysql_num_rows($res);
                $result['data'] = mysql_fetch_array($res);
                break;
        }

发生的情况是,第一种情况下,无论$type是否包含"SELECT“,其中带有"or”的那一个都是匹配的。如果我有8个结果都不同的东西,但有2个东西有相同的结果,为什么我不能像这样使用switch呢?

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-23 05:23:03

使用:

代码语言:javascript
复制
switch(strtoupper($type)) {
        case "DELETE":
        case "UPDATE":
            $result['info'] = mysql_affected_rows($this->con);
            break;
        case "INSERT":
            $result['info'] = "Insert Successful";
            break;
        case "SELECT":
            $result['info'] = mysql_num_rows($res);
            $result['data'] = mysql_fetch_array($res);
            break;
    }

开关没有“或”,您必须分别列出每个案例。

票数 10
EN

Stack Overflow用户

发布于 2011-08-23 05:23:22

您应该使用:

代码语言:javascript
复制
case "DELETE":
case "UPDATE":
            $result['info'] = mysql_affected_rows($this->con);
            break;
票数 2
EN

Stack Overflow用户

发布于 2011-08-23 05:24:18

为什么我不能像这样使用开关?

很简单,因为它不是以这种方式工作的。"DELETE" || "UPDATE"是一个表示"string OR string“的表达式,它的计算结果总是布尔型true。

使用@Danae和@Andrej L所示的符号来解决这个问题。

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

https://stackoverflow.com/questions/7153749

复制
相关文章

相似问题

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