說實話這個bug讓我有點意外
$sn = '123-1';$arr =[
'123' => 12,
'321' => 31];
要判斷$sn 作為key 是否在$arr 裡面
正常操作
if ( in_array($sn, array_keys($arr)) )
else
一切看起來就是那麼完美
但是 但是 但是 報出乙個異常 索引不存在
通過各種日誌 最終發現 if 判斷中 返回乙個true
通過測試發現 array_keys 在獲取陣列的key時 如果陣列的key為數字型字串 則會自動轉為數字
字串在和數字做是否相等的比較的時候 有優先將字串轉化為數字
所以事故就出現了
array_keys($arr)//結果為[
123,
321]
'123-1' == 123 //
返回 true
因為 (int)'123-1' = 123
解決方法
in_array() 方法中還有第三個引數
in_array ( mixed$needle , array
$haystack [, bool $strict = false ] ) :bool
//將第三個引數 設定為 true
昨晚失眠
突然想了一下
我去不行啊 如果是強型別校驗 字串和數字匹配不上啊
所以還是換種寫法吧
if ( !empty($arr[$sn]) )
else
最終還是 array_keys 的鍋
如果key是數字型字串 在使用array_keys 時 數字型字串會自動轉為數字
return 時遇到的乙個問題
今天做業務時遇到了乙個問題 我公司 上游公司 需要接收到 下游公司返回 return 的乙個字串 string string notify 我公司 上游公司 接收到的字串 業務 當我公司 上游公司 接收到下游返回的是 keyi 時,system.out.println 成功 否則,system.ou...
使用docker toolbox遇到的乙個問題
docker pull nginx 然後run起來了,但是在真機上訪問不到nginx,我記著明明埠對映是做好了的 docker run d p 8080 80 nginx 但是在瀏覽器上輸入localhost 8080就是打不開nginx的歡迎頁,原來是docker toolbox使用的是vbox虛...
學習js時遇到的乙個問題
今天在慕課網學習完成後的乙個綜合性程式設計裡遇到了乙個問題。是滑鼠移到 不同行上時背景色改為色值為 f2f2f2,移開滑鼠時則恢復為原背景色 fff時遍歷迴圈後發生了style 未定義的問題。以下貼出錯誤 學號姓名 操作 xh001 王小明刪除 xh002 劉小芳刪除 在處理滑鼠移動改變背景這裡時出...