php弱類型語言中關於類型判斷的執行個體分析

來源:互聯網
上載者:User
這篇文章主要介紹了PHP弱類型語言中類型判斷操作,結合執行個體形式分析了php中針對資料類型的轉換、判斷及函數提示與注意事項,需要的朋友可以參考下

本文執行個體講述了PHP弱類型語言中類型判斷操作。分享給大家供大家參考,具體如下:

1、php一個數字和一個字串進行比較或者進行運算時,PHP會把字串轉換成數字再進行比較。PHP轉換的規則的是:若字串以數字開頭,則取開頭數字作為轉換結果,若無則輸出0。

例如:123abc轉換後應該是123,而abc則為0,0==0這當然是成立的.具體可以參考官方手冊:如果比較一個整數和字串,則字串會被轉換為整數


$a = ($b=4)+5;echo $a;  //9echo '<p>';var_dump(1=='1a');  //trueecho '<p>';var_dump(1=='2a');  //falseecho '<p>';var_dump(1=='a1');  //falseecho '<p>';var_dump("1"=='1a');  //falseecho '<p>';var_dump('51a'+6);  //57echo '<p>';var_dump('a51'+6);  //6

2、在PHP中,== 會先進行類型轉換,再進行對比,而===會先比較類型,如果類型不同直接返回不相等,參考如下樣本


$a = null;$b = '';$c = 0;echo ($a == $b) ? 1 : 0;  // 輸出1echo ($a === $b) ? 1 : 0;  // 輸出0echo ($a == $c) ? 1 : 0;  // 輸出1echo ($a === $c) ? 1 : 0;  // 輸出0echo ($b == $c) ? 1 : 0;  // 輸出1echo ($b === $c) ? 1 : 0;  // 輸出0

3、php中的empty和isset函數

1)變數為:0,"0",null,'',false,array()時,使用empty函數,返回的都為true

2)變數未定義或者為null時,isset函數返回的為false,其他都未true


$a = null;$b = '';$c = 0;$d = "0";$e = false;$f = array();var_dump(empty($a));  //trueecho '<p>';var_dump(empty($b));  //trueecho '<p>';var_dump(empty($c));  //trueecho '<p>';var_dump(empty($d));  //trueecho '<p>';var_dump(empty($e));  //trueecho '<p>';var_dump(empty($f));  //trueecho '<p>';var_dump(isset($a));  //falseecho '<p>';var_dump(isset($b));  //trueecho '<p>';var_dump(isset($c));  //trueecho '<p>';var_dump(isset($d));  //trueecho '<p>';var_dump(isset($e));  //trueecho '<p>';var_dump(isset($f));  //trueecho '<p>';var_dump(isset($g));  //false

4、使用strpos之類的函數要用恒等於來判斷


$sms = "abc";if(strpos($sms,'a') != false ){  echo 1;}else{  echo 2;}

這種情況,很明顯是判斷abc字串中,是否包含a,預期結果應該是要輸出1的,實際結果輸出為2。這是因為strpos函數匹配不到目標字串時,返回false,匹配到了目標字串時,會返回目標字串,在搜尋字串中的索引位置,此處返回了0。


$sms = "abc";if(strpos($sms,'a') !== false ){  echo 1;}else{  echo 2;}

改成恒等於,才是正確的。

5、換行需要雙引號


$time = date('Y-m-d H:i:s').'\r\n';file_put_contents('filename.txt', $time , FILE_APPEND);

如果這樣寫,開啟檔案是這樣的2016-09-02 08:04:04\r\n2016-09-02 08:04:05\r\n2016-09-02 08:04:05\r\n2016-09-02 08:04:05\r\n2016-09-02 08:04:22

正確的寫法是\r\n,使用雙引號包起來

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.