最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年03月06日 11:01:31   作者:Lee_DH  
本篇文章主要介紹了PHP中in_array的隱式轉(zhuǎn)換的解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

問題

今天在寫一個接口的時候,需要傳入大量的基本信息參數(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ù),相當于用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è)務,完全可以嚴謹一些,將int型數(shù)據(jù)存一個數(shù)組,string存一個數(shù)組,兩個不同類型的數(shù)組分別進行數(shù)據(jù)校驗,這樣也不會出現(xiàn)上面的問題

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

相關(guān)文章

最新評論

汝城县| 成武县| 沂南县| 通州市| 台前县| 石泉县| 个旧市| 五大连池市| 安岳县| 自贡市| 江陵县| 重庆市| 凉山| 克什克腾旗| 郓城县| 高安市| 积石山| 朔州市| 六盘水市| 大渡口区| 长岭县| 剑河县| 泰州市| 共和县| 巴塘县| 西青区| 岳阳县| 开原市| 淮阳县| 芮城县| 邹城市| 颍上县| 工布江达县| 大悟县| 宁河县| 金门县| 凤凰县| 高平市| 介休市| 霸州市| 恩平市|