往事重提 php弱型別之比較

2021-09-01 17:03:10 字數 561 閱讀 3088

php是弱型別語言, 比如 變數$v的值為: 0 , false , null , '' ,""  ,未定義

if(!$v) echo "true";

都會輸出true,  所以這些條件都為假, 這在其他一些語言中是不能容忍的。

於是我們在日常開發中也慢慢的習慣了這種弱型別。

以至於我們在判斷字串相等時,也會直接忽略了0的存在直接比較, 比如:

$v = array(0=>"a", "type"=>"b",1=>"c");

$usearr = array();

foreache($v as $key=>$value)

$usearr = $value;

我們本來只想過濾掉鍵值為type的資料, 但結果不小心會使鍵值為0的資料也過濾掉了。

原因是0鍵值為整形,而與字串比較時,會先將字元轉化為整形,沒有數字開頭的字串一般都是轉化為0,因此這裡需要用 === 來替代,這樣才萬無一失。

小心小心,切記切記, :)

如果是強型別語言在編譯時就會提示錯誤, 不能直接比較。

解釋型與編譯型,弱型別與強型別, 各有千秋啊。

php 弱型別比較

php中 是弱等於,不會比較變數型別 是強等於,會先比較變數型別。0e 開頭跟數字的字串 例如 0e123 會當作科學計數法去比較,所以和0相等 0x 開頭跟數字的字串 例如 0x1e240 會被當作16進製制數去比較 布林值true和任意字串都弱相等。當比較的一方是字串時,會先把其轉換為數字,不能...

PHP弱型別比較

ctf中弱型別比較 php弱型別比較 php中其中兩種比較符號 先將字串型別轉化成相同,再比較 先判斷兩種字串的型別是否相等,再比較 字串和數字比較使用 時,字串會先轉換為數字型別再比較 var dump a 0 true,此時a字串型別轉化成數字,因為a字串開頭中沒有找到數字,所以轉換為0 var...

php弱型別比較

題目 1.開啟頁面,進行 審計,發現同時滿足 a 0 和 a 時,顯示flag1。2.php中的弱型別比較會使 abc 0為真,所以輸入a abc時,可得到flag1,如圖所示。abc可換成任意字元 3.is numeric 函式會判斷如果是數字和數字字串則返回 true,否則返回 false,且p...