国产探花免费观看_亚洲丰满少妇自慰呻吟_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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 中江县| 丹阳市| 咸丰县| 友谊县| 榕江县| 元朗区| 巩义市| 平果县| 新沂市| 衡东县| 积石山| 关岭| 四川省| 刚察县| 磴口县| 班戈县| 偏关县| 澳门| 安义县| 山东| 白水县| 左权县| 金昌市| 庆云县| 玉林市| 延川县| 阳城县| 资阳市| 璧山县| 蒙自县| 靖江市| 泸州市| 曲麻莱县| 大安市| 秦皇岛市| 河曲县| 海阳市| 吉安县| 静乐县| 呼图壁县| 缙云县|