您好,登錄后才能下訂單哦!
這篇文章主要為大家詳細(xì)介紹了如何在PHP中使用in_array進(jìn)行隱式轉(zhuǎn)換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,發(fā)現(xiàn)的小伙伴們可以參考一下:
php是一個(gè)嵌套的縮寫名稱,指的是英文超級(jí)文本預(yù)處理語言(php:Hypertext Preprocessor)的縮寫,它的語法混合了C、Java、Perl以及php自創(chuàng)新的語法,主要用來做網(wǎng)站開發(fā),許多小型網(wǎng)站都用php開發(fā),因?yàn)閜hp是開源的,從而使得php經(jīng)久不衰。
string參數(shù)是否為空,示例代碼如下:
if(in_array(0, $param) || $param['img'] == '') { $this->errorCode = 10030; $this->errorMessage = '參數(shù)不正確'; return false; }
可是自測時(shí)發(fā)現(xiàn),傳入正確的參數(shù),都會(huì)返回參數(shù)不正確的提示?。?!
原因
出現(xiàn)這種情況,正是因?yàn)閕n_array惹的禍,in_array(search,array)等價(jià)于將數(shù)組中的每個(gè)value與search比較,由于我$param數(shù)組中除了有int參數(shù),還有一個(gè)string參數(shù),相當(dāng)于用string和int去比較,PHP的隱式轉(zhuǎn)換規(guī)則:
非數(shù)字字符串和整數(shù)比較,字符串自動(dòng)轉(zhuǎn)換為int(0)
下面的例子就驗(yàn)證了我們的說法:
<?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增加第三個(gè)參數(shù)true,用來檢查搜索的數(shù)據(jù)與數(shù)組的值的類型是否相同,這樣函數(shù)只有在元素存在于數(shù)組中且數(shù)據(jù)類型與給定值相同時(shí)才返回 true
針對(duì)我上面出現(xiàn)的業(yè)務(wù),完全可以嚴(yán)謹(jǐn)一些,將int型數(shù)據(jù)存一個(gè)數(shù)組,string存一個(gè)數(shù)組,兩個(gè)不同類型的數(shù)組分別進(jìn)行數(shù)據(jù)校驗(yàn),這樣也不會(huì)出現(xiàn)上面的問題
以上就是億速云小編為大家收集整理的如何在PHP中使用in_array進(jìn)行隱式轉(zhuǎn)換,如何覺得億速云網(wǎng)站的內(nèi)容還不錯(cuò),歡迎將億速云網(wǎng)站推薦給身邊好友。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。