PHP中in array函式使用的問題與解決辦法

2021-07-31 02:55:03 字數 1146 閱讀 9798

先介紹一下需求背景:

發票方式:

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...