php裡 switch case條件語句的問題

時間 2021-09-07 22:17:54

1樓:匿名使用者

佩服樓主 很細心哪!

這個問題應該從php作為動態指令碼語言說起:

動態語言的變數型別是隨儲存的變數而變化的,即變數型別是根據具體環境而進行變化的。

字串"abc",從樓主的意思來看可能指確切字串,但是對於php儲存的時候它是不能確定的,因為隨著語義的變化,其所起的作用也會變化

第一個case 0:,php指令碼將常量0翻譯為確切的整數,與字串比較大小時,需要將字串轉換為整數。php指令碼會將字串abc,從十進位制(預設)轉換為數字,但是abc很明顯不能代表十進位制數,即轉換失敗,則php將結果置為0,如果將字串表示為"0xabc",那麼php指令碼能夠發現0x標識,將abc作為十六進位制轉換,所以能夠得到abc標識的十六進位制整數。

如果樓主學過c,可以做一個簡單比較:

c中的case必須是數字常量,而不能是字串,就因為c是變數型別確定的,執行時不能將確定的變數按語義隨意轉換。而php可以,因為php語言是動態的,變數型別是動態的。

或者從php的例子中學習:

如果一個檔案將111111字串(不是數字)儲存到檔案,然後從檔案直接讀取到變數$a,如下語法就可以將$a作為整數計算:

0+$a

上述表示式得到的結果也可以作為動態語言的一個變現來看

2樓:匿名使用者

你所輸出地是字串,你直接把

case 0:

echo "a 為 0";

break;

這句給刪掉,因為你所定義的是字串,不能用數字的

3樓:it互聯天下

php 中switch 的功能是:選擇執行某個**塊;其工作原理如下:

1.對表示式(一般是變數)進行一次性計算;

2.用變數的值與switch結構中 case 的值進行比較;

3.如果變數值與case的值相等,則執行與該 case 關聯的**;

4.**執行完後,break 語句阻止**跳入下一個 case 中繼續執行;

5.如果沒有 與之匹配的case條件,則執行 default中的**;

例項**:

<?php

//星期

$week=2;

//對星期進行匹配,輸出對應的語句。

switch ($week)

//今天是週二,上班......

?>

4樓:天街夜雨

case 0:

給 0 加上引號

php怎麼讀取mysql一條資料並輸出某段

四舍 入 連線資料庫伺服器 link mysql connect host 伺服器ip地址,本地用localhost 資料庫賬戶 資料庫密碼 選擇要連線的資料庫 mysql select db 資料庫名字 執行查詢,返回資料來源 query mysql query select from test ...

php裡什麼時候用return有什麼意義

人道坎 php中return關鍵字可以將函式的執行結果返回,對初學者來說,掌握php中return的用法也是學習php的一個開始。首先,它的意思就是返回 return 是語言結構而不是函式,僅在引數包含表示式時才需要用括號將其括起來。當返回一個變數時通常不用括號,這樣可以降低php的負擔。基本用法 ...

php怎麼把從資料庫裡查詢的資料十條的顯示出來

select from table limit 0,10 從0開始,共10條 sql的limit語法的如以下形式 select from table limit offset,rows rows offset offset 當省略offset的時候,offset作為0處理,表示提取查詢到的前rows...