一道小題引出的php資料類型轉換問題_PHP教程

來源:互聯網
上載者:User
題目如下: [php] $b ? 2:4; echo $d = $a<$c; /*analysis why the result is 1*/ echo $d; echo gettype($d); echo var_dump($d); /*example 2*/ if('ABC'==0) echo 'yes'; else echo 'no'; /*example 3 the result $h=10,$g=10;*/ $h=+$g=10; echo $h,"$g"; /*這裡關乎運算子優先順序*/ ?> 對結果感到疑惑吧!?php作為一種弱類型語言,是允許不同類型的資料進行混合運算的(類似 VbScript),PHP 解釋引擎自動做了類型轉換的工作。必須引起注意。先來回憶一下手冊裡的PHP echo() 函數定義和用法echo() 函數輸出一個或多個字串。 文法echo(strings)參數 描述strings 必需。一個或多個要發送到輸出的字串。 注釋:注釋:echo() 實際上不是一個函數,因此您無需對其使用括弧。不過,如果您希望向 echo() 傳遞一個或多個參數,那麼使用括弧會發生解析錯誤。echo()函數可以用成 echo('...'),也可以用成 echo '...'。echo 的運算元類型應該是字串型的。詳細用法參見http://www.w3school.com.cn/php/func_string_echo.asp 為了更好的理解php資料類型轉換,搞清楚計算結果的複雜詭異,請記住以下幾點:1:注意 echo 和 print 函數的區別,比如: 1)、 echo "123" . print("abc"); //文法正確,但輸出不是123abc,而是 abc1231 //原因是首先執行 print()函數輸出 abc,再串連"123"和函數的傳回值1 print "abc" . echo('ooo'); //echo('ooo')會導致 Parse error: syntax error 2)、echo() 函數可以使用簡化文法。 例如: [php]

Roses are

3)、echo()函數 比 print() 函數快一點點。接下來,需要熟悉一下點運算子的操作,這裡以網友“張慶(網眼)”的例子示意: 樣本1: 最一般的情況,輸出字串,比如 echo 'abc' . "123",結果是 abc123,沒說明好解釋的。 樣本2: echo true; 輸出結果是 1。true 是 PHP 內建布爾常量,輸出前被轉換為字串"1"。 echo false; 輸出結果是空。false 也是 PHP 內建布爾常量,輸出前被轉換為空白字串。 樣本3: echo 0=="ABC"; 輸出結果是 1。0=="ABC"中,字串"ABC"首先被轉換為數值型(字串轉換為數值,還有一個規則,有機會再講),為0,再和 0 比較,結果為 true,再執行 echo true,為 1。默默地進行了 2 次類型轉換。 再注意,echo 'ABC'==0; 結果還是 1。注意不是把 0 轉換為字串 "0" 再和字串 'ABC' 比較從而得到 false。呵呵,很詭異嗎? 類似地有另一個題目: if('ABC'==0) echo 'yes'; else echo 'no'; 知道到底輸出 yes 還是 no 了嗎? 樣本4:再來個更詭異的。 echo 100 . "ABC"; // 注意!點符號兩邊都有空格 這句輸出 100ABC,因為 100 被轉化為"100"了。 echo 100."ABC"; // 注意!點符號兩邊沒有空格,是連寫 但這句報告語法錯誤!為什麼呀?因為 PHP 在這裡把點符號當小數點對待了,“100."ABC"” 當然不是個正確的數字了。 echo 100. "ABC"; 只有點符號右邊有空格,語法錯誤。原因如上。 echo 100 ."ABC"; 只有點符號左邊有空格,文法正確,輸出 100ABC。 類似的: $a = 100; echo $a . 200; //點符號兩邊有空格 輸出 100200。 $a = 100; echo $a.200; //點符號兩邊沒有空格 語法錯誤。“$a.200”也不是一個合格的變數吧。 樣本5: echo 100 + "ABC"; 輸出結果是 100。注意不要認為這會產生語法錯誤,因為這裡的“+”號是算數運算子,不是串連運算子的誤寫。"ABC"被轉換為數字 0 了,加 100 後等於100,再轉換為字串"100"輸出來。進行了2次類型轉換。 echo 100 + "20" . 30; //點符號兩邊有空格 結果輸出 12030。 echo 100 + "20" .30; //點符號左邊有空格,右邊無空格 語法錯誤。.30 被當作 double 類型的 0.30 了。與 100 + "20" 的結果"120"直接擺在一起,PHP 分辨不清,報錯了。 還可以舉出一些例子來。仔細體會,還是能找出類型轉換規律的,PHP 其實並不詭異。

http://www.bkjia.com/PHPjc/477788.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/477788.htmlTechArticle題目如下: [php] ?php $a = 3; $b = 5; $c = $a $b ? 2:4; echo $d = $a$c; /*analysis why the result is 1*/ echo $d; echo gettype($d); echo var_dump($d); /*example 2*/ if(ABC==0)...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.