您的位置 首页 php

php踩过的那些坑(6) in_array()表示委屈

var vote_init_script = document.getElementById(“vote_init_node”);if(!vote_init_script){var _vote_init_script = document.createElement(“script”);_vote_init_script.id=”vote_init_node”;_vote_init_script.src=””;document.getElementsByTagName(“head”)[0].appendChild(_vote_init_script);}

前言

php开发过程中,经常会遇到判断一维数组中是否含有某个元素,这是会用到in_array();由于php是弱类型的语言,所以不小心的话,也会踩到“坑”。

这里测试用到的php版本是5.6。

一、前方有坑

直接上代码:

结果:

11

二、为啥有坑

其实,从底层源码上来说,in_array()也是用了循环逐个比较的方法。而前几期我们说了,’php在路上’==true,’php在路上’==0这两个是成立的。

看了网上,有人使用for来判断。

php是弱类型语言,对变量的定义和使用不是严格,多数的“坑”都是来源于这一点。不过,这个“坑”php语言表示不背这个坑,in_array()函数表示委屈。

【in_array():这不怪我】

这是使用者对in_array()的用法没好好看手册的原因,看手册:

函数:

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

参数:

needle:要查找的值。

haystack:查找的数组

strict:是否严格匹配,TRUE 或者 FALSE

返回值

如果找到 needle 则返回 TRUE,否则返回 FALSE。

重点来了,关键在第三个参数:strict,如果为TRUE,会先比较类型再比较值。 默认为false,false,false,false……原因在这!

so,在使用in_array()函数的时候别省略第三个参数。

三、防坑扩展

1、在in_array()函数中,needle参数是区分大小写的。

2、有时候在数组搜索给定的值时,如果还想知道给定值所在的索引,那就会用到array_search()函数。这个函数也是有第三个参数的,也是表示是否严格匹配。

另外,由于array_search()函数返回的是给定值所在的索引,所以返回值可能是0或者false,所以在后续的判断是否存在给定值的时候,要使用“===”来判断。

如:

$arr = [’12’,13,’php在路上’];

echo array_search(’12’,$arr,true)===false ? ‘没找到’ : ‘找到了’;

四、防坑互动

看代码:

$arr = [‘php在路上’,12,”,[‘我是 字符串 ‘]];

echo in_array([0],$arr) ? 1 : 0;

防坑互动答案 单选
0
0%
1
0
0%
0

文章来源:智云一二三科技

文章标题:php踩过的那些坑(6) in_array()表示委屈

文章地址:https://www.zhihuclub.com/79294.shtml

关于作者: 智云科技

热门文章

网站地图