搜索
首页php教程PHP源码关于php in_array函数使用的问题

in_array函数是判断数据中是否存在指定的内容了,对于这个函数用法非常的简单但在使用过程中会我发现有一些问题,下面我们就对于这些问题来看看如何处理吧。


先介绍一下需求背景:


发票方式:
0=捐赠(不要问我为什么,历史原因)
1=对中寄送
2=索取

3=电子发票

现在要对用户提交的数据进行检测:


if(!in_array($_POST['invoice_action'], array(0,1,2,3))){
    throw new Exception('请选择正确的发票方式');

}


这个时候出现一个问题,如果压根就不存在$_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<script>ec(2);</script>
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器