国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP中in_array的隱式轉換的解決方法

2024-05-05 00:02:33
字體:
來源:轉載
供稿:網友

問題

今天在寫一個接口的時候,需要傳入大量的基本信息參數,參數分別是int和string兩種類型,為了校驗方便,我打算把所有的參數都放在數組中,然后用in_array(0, $param)判斷 int 參數是否為0,再單獨判斷string參數是否為空,示例代碼如下:

      if(in_array(0, $param) || $param['img'] == '') {        $this->errorCode = 10030;        $this->errorMessage = '參數不正確';        return false;       }

可是自測時發現,傳入正確的參數,都會返回參數不正確的提示!!!

原因

出現這種情況,正是因為in_array惹的禍,in_array(search,array)等價于將數組中的每個value與search比較,由于我$param數組中除了有int參數,還有一個string參數,相當于用string和int去比較,PHP隱式轉換規則:

非數字字符串和整數比較,字符串自動轉換為int(0)

下面的例子就驗證了我們的說法:

<?php  $a = (int)'abc';  var_dump($a); //int(0)  $c = array(0,1,2,3);  if(in_array('abc', $c)) {    echo 'exist';  } else {    echo 'not exist';  } //exist 

解決辦法

in_array增加第三個參數true,用來檢查搜索的數據與數組的值的類型是否相同,這樣函數只有在元素存在于數組中且數據類型與給定值相同時才返回 true

針對我上面出現的業務,完全可以嚴謹一些,將int型數據存一個數組,string存一個數組,兩個不同類型的數組分別進行數據校驗,這樣也不會出現上面的問題

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 汕尾市| 延安市| 焦作市| 浦江县| 南通市| 攀枝花市| 招远市| 永平县| 宁蒗| 神农架林区| 正定县| 泰安市| 西林县| 田林县| 赤峰市| 科技| 独山县| 桂阳县| 泌阳县| 西华县| 肃北| 个旧市| 讷河市| 巴中市| 娄烦县| 平舆县| 梧州市| 丘北县| 杨浦区| 崇信县| 友谊县| 弋阳县| 德昌县| 天柱县| 神木县| 永川市| 怀远县| 特克斯县| 宁乡县| 宁陕县| 隆林|