[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


一定能解决ROS系统 rosdep update超时问题de简单方法 rosdep update命令使用 1.首先将下面仓库的内容clone到本地 git clone https://github.com/ros/rosdistro.git 记录rosdistro存放地址,例如/home/gec/rosdistro 如果是自己的改成/home/user/rosdistro,其中user表示用户名 2.修改/usr/lib/python2/dist-packages/rosdep2/rep3.py文件 cd /usr/lib/python2/dist-packages/ros 阅读详情

相关推荐

基于51单片机扫地机器人(全套Proteus仿真+原理图+程序+说明书)

(内含源程序代码,原理图,仿真,讲解视频,元件清单等,【精品】值得推荐!!!扫地机器人是以单片机为主控制器。通过单片机控制小车行驶、除尘、蜂鸣。扫地机器人使用双电机驱动,以提高整车运动的平稳性;在智能车进驶过程中,采用双超声波模块实现避障。

2301_76434107的博客 1896

php函数in_array奇怪现象

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

zvivs的专栏 1003

DSP TMS320F280049之CCS工程的建立(库函数版)

TMS320F280049 DSP是TI最新出的一款C2000系列的DSP,主频为100MHZ,功能较为强大,具有较多的片上模拟外设。这一节主要讲述如何新建F280049的CCS工程。 Step1.下载文件: 下载C2000Ware软件并安装。下载地址如下: http://www.ti.com.cn/tool/cn/C2000WARE?keyMatch=C2000Ware%2...

fanxianyan1993的博客 1万+

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

4D Gaussian Splatting for Real-Time Dynamic Scene Rendering-4DGS阅读笔记

为了实现实时动态场景渲染,同时还能具备较高的训练和存储效率,作者提出了四维高斯溅射(4D-GS)方法,将其作为动态场景的一种整体表示方式,而不是对每个单独的帧应用三维高斯溅射(3D-GS)方法。在 4D-GS 中,提出了一种新颖的显式表示方法,它同时包含三维高斯模型和四维神经体素。受 HexPlane 启发,提出了一种分解的神经体素编码算法,以高效地从四维神经体素构建高斯特征,然后应用一个轻量级多层感知器(MLP)来预测在新时间戳下的高斯变形。

2403_85515624的博客 2343

【保姆级教程】基于UNet++&MobileNetv2的语义分割模型从训练到RK3588部署:让边缘AI落地效率提升300%

通过SMP库一键构建encoder_name="mobilenet_v2", # 选择MobileNetv2作为骨干encoder_weights="imagenet", # 加载预训练权重加速收敛in_channels=3, # 输入图像通道数(RGB)classes=29, # Cityscapes数据集类别数activation=None # 输出无激活,便于后续损失计算本教程从“模型设计-训练-转换-边缘部署”全链路拆解了。

m0_71589036的博客 89

PHP in_array() 之判断坑

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

༺墨༒眉༻ 571

将Dify平台开发的工作流集成到Open WebUI中

将Dify开发的工作流集成到Open WebUI是一个能够显著增强AI应用交互能力和业务逻辑深度的有效途径。其核心在于通过API建立两者间的通信桥梁,并确保API在格式、协议和行为上的一致性,特别是向OpenAI Chat API规范看齐。最简单直接的路径是利用Dify的“对话型”或“Agent型”应用,这类应用的API设计更倾向于满足Open WebUI这类聊天前端的期望。然而,面对复杂的现实场景,直接的完美兼容并非总是唾手可得。

形上得其象,形下合于数;阴阳自济,玄理自明。 2031

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

CATIA二次开发一一一装配体与零件之间的坐标转换

输入参数:Product(产品实例对象)、iPointToTransfor(待转换坐标点CATMathPoint)核心逻辑:通过产品对象的绝对位置变换矩阵,计算逆向变换实现坐标系转换。输出参数:Point(转换后的局部坐标点CATMathPoint)

工业软件开发 1129

YOLOv8改进,YOLOv8添加DCNv4可变性卷积(windows系统成功编译),全网最详细教程

DCNv4通过两项关键增强解决了其前身DCNv3的局限性:1. 移除空间聚合中的softmax归一化,以增强其动态特性和表达能力;2. 优化内存访问以最小化冗余操作,从而加速计算。这些改进使得DCNv4相比DCNv3显著加快了收敛速度,并且处理速度大幅提升,前向传播速度超过三倍。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 6471

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

还在纠结二层交换机和三层交换机的区别?这篇文章帮你讲明白!

你好,这里是网络技术联盟站,我是瑞哥。公众号后台有小伙伴想要写一篇文章具体介绍一下二层交换机和三层交换机,此类的文章,之前写过几篇,今天瑞哥再写一篇,希望对大家有所帮助!

网络技术联盟站 4442

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

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

[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

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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

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

ltx06的专栏 1168

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

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、付费专栏及课程。

余额充值