先介紹一下需求背景:
發票方式:
0=捐贈(不要問我為什麼,歷史原因)
1=對中寄送
2=索取
3=電子發票
現在要對使用者提交的資料進行檢測:
php;auto-links:false;">if(!in_array($_post['invoice_action'], array(0,1,2,3)))
這個時候出現乙個問題,如果壓根就不存在$_post[『invoice_action']
這個值,為什麼沒有丟擲異常?
經確認,這就是php作為弱型別語言的乙個坑,沒錯,這是乙個坑.
看一下這組**:
echo in_array('', array(0)) ? 1 : 0; // 結果:1
echo in_array(null, array(0)) ? 1 : 0; // 結果:1
echo in_array(false, array(0)) ? 1 : 0; // 結果:1
這麼大乙個坑,我們要怎麼繞過或者填起呢?
方法一:in_array支援第三個引數,強制對資料型別檢測
echo in_array('', array(0), true) ? 1 : 0; // 結果:0
echo in_array(null, array(0), true) ? 1 : 0; // 結果:0
echo in_array(false, array(0), true) ? 1 : 0; // 結果:0
方法二:依然是資料型別方向,把陣列中的0改為字串
echo in_array('', array('0'), true) ? 1 : 0; // 結果:0
echo in_array(null, array('0'), true) ? 1 : 0; // 結果:0
echo in_array(false, array('0'), true) ? 1 : 0; // 結果:0
**:
PHP中in array 函式的坑
arr array name test male age 0 if in array h232 arr else結果輸出 yes 查詢手冊,手冊上也只是說in array 檢查資料中是否存在某個值。in array mixed needle,array haystack bool strict fa...
php中in array函式用法分析
php是弱型別語言 在使用in array函式時盡量帶上第三個引數,如下 複製 如下 var dump in array 0,array s sss true return false var dump in arrdobosay 0,array s sss n程式設計客棧bsp return tr...
PHP 中 in array 需要注意的一點
示例 先來看乙個小示例 needle 1abc haystack array 1,2,3 var dump in array needle,haystack 輸出為 true 解釋 根據官方文件函式 in array 的描述 boolin array mixed needle,array hayst...