簡體   English   中英

為什么我不能使用這樣的開關?

[英]Why can't I use a switch like this?

我正在學習OOP PHP。 我有幾年的程序經驗,但想把它提升到一個新的水平。

無論如何,在我干凈整潔的代碼的心態中,嘗試了一些我學到的關於OOP的東西,我嘗試了一些普通的PHP Switch語句,這是我以前從未嘗試過的,在我看來,它是非常符合邏輯的。像這樣工作,但它不起作用。

            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”。 如果我有8個結果全部不同的東西,但是有兩個結果相同的東西,為什么我不能像這樣使用開關,那么我必須復制第一個案例似乎是垃圾。

謝謝。

采用:

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;
    }

開關沒有“或”,您必須單獨列出每個案例。

你應該使用:

case "DELETE":
case "UPDATE":
            $result['info'] = mysql_affected_rows($this->con);
            break;

為什么我不能像這樣使用開關?

僅僅因為它不起作用。 "DELETE" || "UPDATE" "DELETE" || "UPDATE"是一個表達“string OR string”的表達式,它總是會計算為布爾值true

使用@Danae和@Andrej L顯示的符號來解決它。

像這樣:

switch (strtoupper($type)) {
case "DELETE":
case "UPDATE":
   $result['info'] = mysql_affected_rows($this->con);
   break;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM