首頁  >  文章  >  後端開發  >  php弱型別語言中關於型別判斷的實例分析

php弱型別語言中關於型別判斷的實例分析

黄舟
黄舟原創
2017-08-10 11:49:201326瀏覽

這篇文章主要介紹了PHP弱型別語言中型別判斷操作,結合實例形式分析了php中針對資料型別的轉換、判斷及函數使用技巧與注意事項,需要的朋友可以參考下

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

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

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


$a = ($b=4)+5;
echo $a;  //9
echo &#39;<p>&#39;;
var_dump(1==&#39;1a&#39;);  //true
echo &#39;<p>&#39;;
var_dump(1==&#39;2a&#39;);  //false
echo &#39;<p>&#39;;
var_dump(1==&#39;a1&#39;);  //false
echo &#39;<p>&#39;;
var_dump("1"==&#39;1a&#39;);  //false
echo &#39;<p>&#39;;
var_dump(&#39;51a&#39;+6);  //57
echo &#39;<p>&#39;;
var_dump(&#39;a51&#39;+6);  //6

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


$a = null;
$b = &#39;&#39;;
$c = 0;
echo ($a == $b) ? 1 : 0;  // 输出1
echo ($a === $b) ? 1 : 0;  // 输出0
echo ($a == $c) ? 1 : 0;  // 输出1
echo ($a === $c) ? 1 : 0;  // 输出0
echo ($b == $c) ? 1 : 0;  // 输出1
echo ($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 = &#39;&#39;;
$c = 0;
$d = "0";
$e = false;
$f = array();
var_dump(empty($a));  //true
echo &#39;<p>&#39;;
var_dump(empty($b));  //true
echo &#39;<p>&#39;;
var_dump(empty($c));  //true
echo &#39;<p>&#39;;
var_dump(empty($d));  //true
echo &#39;<p>&#39;;
var_dump(empty($e));  //true
echo &#39;<p>&#39;;
var_dump(empty($f));  //true
echo &#39;<p>&#39;;
var_dump(isset($a));  //false
echo &#39;<p>&#39;;
var_dump(isset($b));  //true
echo &#39;<p>&#39;;
var_dump(isset($c));  //true
echo &#39;<p>&#39;;
var_dump(isset($d));  //true
echo &#39;<p>&#39;;
var_dump(isset($e));  //true
echo &#39;<p>&#39;;
var_dump(isset($f));  //true
echo &#39;<p>&#39;;
var_dump(isset($g));  //false

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


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

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


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

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

5、換行需要雙引號


$time = date(&#39;Y-m-d H:i:s&#39;).&#39;\r\n&#39;;
file_put_contents(&#39;filename.txt&#39;, $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,使用雙引號包起來

以上是php弱型別語言中關於型別判斷的實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn