在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/PHP/ 【PHP】如何處理才能讓如下結(jié)果符合預(yù)期呢?

【PHP】如何處理才能讓如下結(jié)果符合預(yù)期呢?

clipboard.png

clipboard.png
現(xiàn)在是1和0比較出來是true,1和1比較出來是false,該怎么處理才能讓結(jié)果符合預(yù)期呢?

還有個(gè)很奇怪的地方,$val明明值為1,但是卻是一個(gè)非整型字符串,(int)$val的結(jié)果是0

回答
編輯回答
任她鬧

之前有遇到過接口返回?cái)?shù)據(jù)長度多3個(gè)的情況,如果長度是固定的

if (strlen($val) > 1){
    $val = substr($val,13);
}
2018年5月2日 22:46
編輯回答
莓森

怎麼重覆提問了-.-順便把裏面的答案更正一下
https://segmentfault.com/q/10...

PHP 跟其他語言(如java)的一個(gè)不同的地方是php用 $ 就可以存取全部類型,而java 使用int或string或其他都要聲明為int或string等...

所以php在做 == 比較運(yùn)算時(shí)在某情況下會(huì)自動(dòng)做隱式處理,你例子裏是int 和 string作比較,php會(huì)忽略類型比較並且把string的值轉(zhuǎn)換成0。

你這個(gè)例子的string是14位數(shù),估計(jì)裏面包含了&nbsp這些佔(zhàn)位符,根據(jù)PHP的規(guī)則,這個(gè)string(14)"1" 會(huì)隱式轉(zhuǎn)換成string(1)0,而當(dāng)你的$val 也是int(0)時(shí),因?yàn)橹槐容^數(shù)值,自然返回true了。

不過官方未可能沒有提及到的情況是,當(dāng)string的第1位是數(shù)字時(shí),比如string(2)"1a" 不會(huì)把1a轉(zhuǎn)換成0,只有第1位是非數(shù)字時(shí)才會(huì)轉(zhuǎn)換成0,如string(2)"a1" 會(huì)變成0。

但是注意string(3)"1e0" (1e0 ~ 1e9),則會(huì)轉(zhuǎn)換成string(1)"1" (1 ~ 1000000000) ,因?yàn)?e本身是數(shù)學(xué)上的函數(shù)。

2018年9月10日 15:15
編輯回答
卟乖

請(qǐng)貼上你的PHP版本,我在PHP5.6版本下測試
這是我的測試
圖片描述

以下是我的測試結(jié)果
圖片描述

如果是因?yàn)?=會(huì)進(jìn)行轉(zhuǎn)化,你可以考慮===全等來判斷類型和值,
例如

'1' === 1 //false
'1' === (string)1  // true

如果是因?yàn)槿绻前渌嘤嘧址?建議你用trim方法來去除一下多余的字符串

2017年7月27日 01:40