濮阳杆衣贸易有限公司

主頁 > 知識庫 > PHP中in_array的隱式轉(zhuǎn)換的解決方法

PHP中in_array的隱式轉(zhuǎn)換的解決方法

熱門標(biāo)簽:江蘇外呼電銷機器人報價 專業(yè)電話機器人批發(fā)商 400電話申請方法收費 電話機器人危險嗎 長沙crm外呼系統(tǒng)業(yè)務(wù) 400電話辦理福州市 深圳外呼系統(tǒng)收費 離石地圖標(biāo)注 南寧高頻外呼回撥系統(tǒng)哪家好

問題

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

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

可是自測時發(fā)現(xiàn),傳入正確的參數(shù),都會返回參數(shù)不正確的提示?。?!

原因

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

非數(shù)字字符串和整數(shù)比較,字符串自動轉(zhuǎn)換為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增加第三個參數(shù)true,用來檢查搜索的數(shù)據(jù)與數(shù)組的值的類型是否相同,這樣函數(shù)只有在元素存在于數(shù)組中且數(shù)據(jù)類型與給定值相同時才返回 true

針對我上面出現(xiàn)的業(yè)務(wù),完全可以嚴(yán)謹一些,將int型數(shù)據(jù)存一個數(shù)組,string存一個數(shù)組,兩個不同類型的數(shù)組分別進行數(shù)據(jù)校驗,這樣也不會出現(xiàn)上面的問題

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • php使用array_chunk函數(shù)將一個數(shù)組分割成多個數(shù)組
  • PHP array_reduce()函數(shù)的應(yīng)用解析
  • PHP 二維array轉(zhuǎn)換json的實例講解
  • 分享六個比較好用的php數(shù)組Array函數(shù)
  • php curl獲取到j(luò)son對象并轉(zhuǎn)成數(shù)組array的方法
  • PHP數(shù)組式訪問接口ArrayAccess用法分析
  • PHP如何使用array_unshift()在數(shù)組開頭插入元素

標(biāo)簽:太原 濱州 南京 興安盟 株洲 白酒營銷 曲靖 南昌

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP中in_array的隱式轉(zhuǎn)換的解決方法》,本文關(guān)鍵詞  PHP,中,array,的,隱式,轉(zhuǎn)換,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP中in_array的隱式轉(zhuǎn)換的解決方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP中in_array的隱式轉(zhuǎn)換的解決方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    封丘县| 怀远县| 永吉县| 白城市| 杭锦旗| 舟曲县| 灵璧县| 冀州市| 宜良县| 阳朔县| 锡林浩特市| 黑山县| 海口市| 彩票| 茂名市| 孝义市| 清丰县| 武定县| 巴中市| 留坝县| 九龙县| 封开县| 江达县| 龙川县| 邳州市| 灵丘县| 太白县| 长顺县| 富阳市| 汽车| 毕节市| 上思县| 津南区| 罗山县| 哈尔滨市| 筠连县| 新平| 莲花县| 兰考县| 蒙山县| 枝江市|