[php] in_array 判断问题

php判断文件上传图片格式的实例详解 php判断文件上传图片格式的实例详解 判断文件图片类型, $type = $_FILES['image']['tmp_name'];//文件名 //$type = $this->getImagetype( $type ); $filetype = ['jpg', 'jpeg', 'gif', 'bmp', 'png']; if (! in_array($type, $filetype)) { return "不是图片类型"; } 如上如果用户修改文件后缀为png jpeg等无法满足,查了查资料解决方法是采用判断文件的二进制流信息,如果你刚好遇到这种问题不妨尝试一下: 立即下载
<?php
$arr = array("Linux");
if (in_array(0, $arr)) {
    echo "match";
}
?> 

执行以上代码,0和字符串是可以匹配成功的。

原因是在in_array,如果比较的类型不匹配,并且第一个参数是0,它会返回true(不正确)。

查手册:

If the third parameter strict is set to TRUE then the in_array() function will also check thetypes of theneedle in thehaystack.  

加上类型比较后返回false(正确)

查资料发现:

http://hi.baidu.com/cnkarl/item/9eb1505653a72bc59e2667dd 

摘录如下:

1.情况一

$test = 'a';

$array = array('a', 'b', 'c');

if (in_array($test, $array)) {

echo 'in array';

} else {

    echo 'no';

}

//output: in array

 

2.情况二

$test = 'other value';

$array = array('a', 'b', 'c');

if (in_array($test, $array)) {

echo 'in array';

} else {

    echo 'no';

}

//output: no

------------------------ 看似一切都正常的分割线 -----------------------

3.情况三

$test = 0;

$array = array('a', 'b', 'c');

if (in_array($test, $array)) {

    echo 'in array';

} else {

    echo 'no';

}

//output: in array

难以置信,这不坑爹吗,0不在列表中,但是这个函数返回true。这个函数很常用,所以当某些巧合出现后,就会导致不可预料的错误。

一开始我猜测in_array函数除了在values中寻找,还会去寻找keys,后来发现不是这样的。


4.情况四

$test = '0';

$array = array('a', 'b', 'c');

if (in_array($test, $array)) {

    echo 'in array';

} else {

    echo 'no';

}

//output: no

是不是很有意思


5.原来是因为:

http://www.php.net/manual/en/language.operators.comparison.php

var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("10" == "1e1"); // 10 == 10 -> true
var_dump(100 == "1e2"); // 100 == 100 -> true

php比较数字和字符串时,会尝试将字符串转换为数字再进行比较。 例子中的 'a', 'b', 'c' 转成数字都是0,所以和0相等,in_array就返回了true。


6.如何避免

PHP的类型戏法是把双刃剑,有时候很爽,有时候很贱。

所以当in_array的needle与array中的值类型是否相同还不确定时,最好设置in_array函数的第三个参数 strict = true,这样在检查的时候会检查类型,数字与字符串就不会偷偷相等,也就避免类似这种问题。

$test = 0;

$array = array('a', 'b', 'c');

if (in_array($test, $array, true)) {

    echo 'in array';

} else {

    echo 'no';

}

//output: no


西门子V90 PN伺服控制核心:FB284功能块详解与实战 在工业自动化中,伺服定位控制是运动控制的基础环节,其本质是PLC通过PROFINET协议与伺服驱动器实现高速、确定性数据交互。FB284作为西门子为V90 PN定制的标准化功能块,封装了GSD映射、状态机管理与周期性PDO同步机制,将底层寄存器操作抽象为高可靠调用接口。相比MOVE指令或MC_MoveAbsolute等通用方案,FB284显著降低时序错乱风险,提升多轴同步精度与故障响应能力。它广泛应用于包装、灌装、装配等中端产线,尤其适配S7-1200/1500平台下的快速部署与现场维护。本文聚焦V90 P 阅读详情

相关推荐

工业视觉光源频闪控制的三种核心模式与选型实战

本文深入解析工业视觉系统中光源频闪控制的三种核心模式:光源主控、相机主控与硬同步。针对高速飞拍、缺陷检测等场景,详细对比了各模式的时序原理、硬件要求与适用场景,并提供了基于产线速度与检测需求的实战选型指南,帮助工程师有效消除运动模糊、提升成像质量与系统稳定性。

weixin_29299807的博客 438

php函数in_array奇怪现象

$k = 0; $fieldArr = array('tt', 'bb'); if ( in_array( $k, $fieldArr)) { echo '1'; } 按理来说,是不会输出1的,但是最后输出1, 是不是in_array函数使用的时候会转类型呢,卖个关子,看了源码告诉大家

zvivs的专栏 1003

ThinkPad T14 Gen 2与T14P系列对比

表格您的需求推荐机型日常办公、出差、文档处理、视频会议✅(够用、轻便、便宜)视频剪辑、3D建模、编程编译、AI训练、高色准设计✅(性能强、屏幕好、扩展佳)想要未来 5 年不换机✅T14p预算低于 5000 元✅T14 Gen 2(或考虑 T14 Gen 3/4)T14p 2025 款 ≠ 小改款,而是架构级升级它从“高性能笔记本”进化为“AI 移动工作站”,核心差异在于NPU + Ultra 平台 + 全面屏显 + 超长续航。如果您从事AI 开发、视频创作、工程仿真、多任务编程。

tecoes的博客 2747

php怎么上传所有格式的图片,php判断文件上传图片格式的实例详解

php判断文件上传图片格式的实例详解判断文件图片类型,$type = $_FILES['image']['tmp_name'];//文件名//$type = $this->getImagetype( $type );$filetype = ['jpg', 'jpeg', 'gif', 'bmp', 'png'];if (! in_array($type, $filetype)){retu...

weixin_39538500的博客 188

uniapp+openlayers集成天地图实战:renderjs通信陷阱与性能优化避坑指南

本文深入探讨了uniapp与openlayers集成天地图时的renderjs通信陷阱与性能优化策略。通过实战案例解析了renderjs的特殊通信机制、地图实例生命周期管理、图层懒加载等关键技巧,帮助开发者避免常见坑点,提升应用流畅度。特别针对多语言切换、热重载偏移等疑难问题提供了解决方案,是uniapp+openlayers开发者的实用避坑指南。

weixin_30872157的博客 362

基于 Python Flask 的智能个人财务系统

4.财务分析与报告:自动生成财务分析报告,提供图表展示(如饼图、柱状图)帮助用户了解收支状况和财务趋势。9.管理员管理功能:提供管理员模块,允许管理员查看用户财务数据、生成统计报告,并进行用户管理与权限控制。5.资产管理:用户可以记录并追踪个人资产(如房产、车辆、投资等),系统提供资产价值增减情况和趋势分析。3.预算制定与管理:用户根据收入设定每月预算,系统自动对比实际支出与预算差异,实时提醒预算完成情况。6.信用卡管理:提供信用卡账单记录与管理功能,提醒用户信用卡还款日期,避免逾期,帮助管理信用卡消费。

weixin_68689665的博客 424

PHP in_array() 之判断坑

前几天因为老数据库的一个字段,真是引发了好多坑,然后深入了解了一下 `gender` tinyint(4) DEFAULT NULL COMMENT '性别 0女 1男', //不要问我为什么这样存,我也想问 然后数据可能会产生三种情况 (NULL)(0)(1) in_array语法: in_array(search,array,type),type可选。如果设置该参数为 true,...

༺墨༒眉༻ 571

深入探索 ClickHouse:性能优化之道

在大数据处理的广袤天地里,ClickHouse 宛如一颗璀璨的明星,以其卓越的性能为海量数据的存储与查询提供了强大助力。但要想让 ClickHouse 发挥出极致效能,性能优化至关重要。今天,就让我们一同深入探寻 ClickHouse 的性能优化之路。

arnold66的专栏 1548

in array php 坑,php – 为什么in_array()返回意外/奇怪的结果?

解决方案(简而言之):使用in_array()始终使用第三个参数strict true:$arrayWithTrue = ['Andreas',$arrayWithTrue,true)); // returns bool(false)var_dump(in_array(0,$arrayWithNull,true)); // returns bool(false)var_dump(in_array(...

weixin_34518190的博客 493

【论文阅读笔记】One Shot 3D Photography

论文主页:https://facebookresearch.github.io/one_shot_3d_photography/ 代码地址:https://github.com/facebookresearch/one_shot_3d_photography   该3D照片方向,由于刚入门,所以会倾向于翻译文章。每个操作上的选择,及为什么不进行另外操作的原因都如数放上。 论文小结   本作的工作是从单张RGB图片生成一个移动视角的3D照片。   其管道大致如下: 由RGB图像通过单目深度估计网络估计深度图

时光机 °的博客 1839

智能体开发套件(ADK)介绍

city } ---") city_normalized = city . lower() . replace(" " , "") # 模拟天气数据库 mock_weather_db = {

lpfasd123的博客 1409

php中in array函数_PHP中in_array函数使用的问题与解决办法

先介绍一下需求背景:发票方式:0=捐赠(不要问我为什么,历史原因)1=对中寄送2=索取3=电子发票现在要对用户提交的数据进行检测:php;auto-links:false;">if(!in_array($_POST['invoice_action'], array(0,1,2,3))){throw new Exception('请选择正确的发票方式');}这个时候出现一个问题,如果压根就不存...

weixin_42129113的博客 489

手把手带你死磕ORBSLAM3源代码(一)目录详解

ORB-SLAM3是一种基于特征点的稀疏实时单目SLAM(Simultaneous Localization and Mapping)系统。它是ORB-SLAM系列模型的第三代版本,用于在无人机、机器人和增强现实等领域中进行实时定位和建图。ORB-SLAM3使用了一种特征点提取和描述算法,称为ORB(Oriented FAST and Rotated BRIEF)。该算法能够提取图像中的稳定特征,并将其用于地图建立和相机定位。

anananajiushiwo的博客 2301

php数组nn从外围1递增,[php] in_array 判断问题

$arr = array("Linux");if (in_array(0, $arr)) {echo "match";}?>执行以上代码,0和字符串是可以匹配成功的。原因是在in_array,如果比较的类型不匹配,并且第一个参数是0,它会返回true(不正确)。查手册:If the third parameter strict is set to TRUE then the in_array...

weixin_34786066的博客 151

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

[php] in_array 判断问题(坑)

<?php $arr = array("Linux"); if (in_array(0, $arr)) { echo "match"; } ?> 执行以上代码,0和字符串是可以匹配成功的。 原因是在in_array,如果比较的类型不匹配,并且第一个参数是0,它会返回true(不正确)。 查手册:If the third parame...

weixin_30764771的博客 255

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题

大家可能都用过in_array来判断一个数据是否在一个数组中,一般我们的数组可能数据都比较小,对性能没什么影响,所以也就不会太在意。 但是如果数组比较大的时候,性能就会下降,运行的就会久一点,那如果针对在大数组情况下做优化呢,下面说两种方法(都是通过自定义函数来实现): 1.数组key与value翻转,通过isset判断key是否存在于数组中 复制代码代码如下:

ltx06的专栏 1168

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

php上传图片,解决in_array无效的问题,以及判断图片格式类型

上传图片

wry_developer的博客 1883

php array 根据value获取key,in_array()判断是否在数组内实例

php array 根据value获取key,in_array()判断是否在数组内实例 <?php header("Content-type: text/html; charset=utf-8"); $categoryids = array ('2' => '生活','103' => '法律', '104' => '宗教', '105' => '民俗' ...

weixin_30794491的博客 113

PHP数组搜索避坑指南(array_search返回键常见错误全解析)

掌握PHP数组搜索技巧,避免array_search返回键常见错误。详解其在关联数组中的应用、返回键的原理及注意事项,帮助开发者精准定位数据。涵盖类型匹配、false误判等关键问题,提升代码可靠性,值得收藏。

PixelFlow的博客 854

php in_array隐式转,PHP中in_array的隐式转换的解决方法

问题今天在写一个接口的时候,需要传入大量的基本信息参数,参数分别是int和string两种类型,为了校验方便,我打算把所有的参数都放在数组中,然后用in_array(0, $param)判断 int 参数是否为0,再单独判断string参数是否为空,示例代码如下:if(in_array(0, $param) || $param['img'] == '') {$this->errorCode ...

weixin_42519170的博客 121

php数组测试,在PHP中针对数组测试变量

我想我应该使用in_array(),但由于某种原因,它给了我不准确的信息.我查看了array_search()和array_key_exists(),但看起来这只有在我的数组中有一个键和值时才有用.简而言之,我运行一个条件来获取当前的EST时间和日期,并确定它是“在几小时内”还是“在下班后”.所以现在是星期二的19:00,这应该说是“非工作时间”,但是它回应“在工作时间”,我错过了什么?示例代码:...

weixin_29205061的博客 107

in_array,最好将第三个参数设置为true

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33859231的博客 145

处理assignment in condition警告——让代码严谨的一个小改进

问题主要出在这一句 while ($row=mysql_fetch_array($query)) { .... } 在zendstudio里会出现黄色的warning,提示说:assignment in condition。 出现这样的问题代码是可以继续正常执行的,但是写法不太严谨,因为在while/if的条件中,系统期望的是一个布尔类型的值,当表达式传递的结果非布尔值类型时,...

anfum29604的博客 4028

php中字符处理注意的问题(1)

[b]1. in_array()函数[/b] [code="java"]$zero = "0"; $za = array("00"); if(in_array($zero, $za, true)){ echo 'in'; }else{ echo 'not in'; }[/code] 这段代码应该输出什么?答案是in,而不是not in。 然后测试一下这个: [code...

两天 208

学会php又忘了,php开发时容易忘记的一些技术细节

在做开发的时候,有可能会忘记掉一些技术细节。这些细节有可能会造成很严重的后果,比如网站被注入、网站崩溃等等。现在我们总结一下,有可能会遇到的一些 PHP 中的一些 “陷阱”。陷阱一:empty()//以下代码会直接导致PHP解析错误$arr1 = [1, 2, 3];$arr2 = [3, 4];if(empty(array_diff($arr1, $arr2))) { //解析错误echo 'e...

weixin_39703468的博客 141
上一篇: [MySQL] 设置时区
下一篇: 硬件知识扫盲
Edwingu
博客等级 码龄23年 9粉丝 35原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值