php判断数组元素中是否存在某个字符串的方法


Posted in PHP onJune 14, 2014

方法一:采用in_array(value,array,type)

type 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。

$arr = array('可以','如何','方法','知道','?]有','不要');
//in_array(value,array,type)
$isin = in_array("如何2",$arr);
if($isin){
    echo "in====".$isin;
}else{
    echo "out====".$isin;
}

方法二:

array_key_exists 'array_key_exists() 函数判断某个数组中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false。array_key_exists(key,array

方法三:

array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false。array_search(value,array,strict),当数据量比较大的时候,用array_key_exists比较合适,但占用的内存比较大,

数组结构是: array(1, 2, 3, ..)和 array(1 => true, 2 => false, ..),内存使用比值为1:2。
具体跟内部实现有关系,在php中第一种和第二种的数据结构类似,都是关联数组。

其它补充:

查找一个元素是否在数组中,一共有下面三种做法:

in_array  '函数在数组中搜索给定的值。in_array(value,array,type)type 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。
array_key_exists 'array_key_exists() 函数判断某个数组中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false。

array_key_exists(key,array)

array_search 'array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false。

array_search(value,array,strict)

从这里来看,在数据量不大的时候,比如小于1000,查找用哪一种都行,都不会成为瓶颈;
当数据量比较大的时候,用array_key_exists比较合适。
当然这里array_key_exists占用的内存比较大,经测算
数组结构是: array(1, 2, 3, ..)和 array(1 => true, 2 => false, ..)
他们内存使用比值为1:2;
这个和内部实现有关系,实际上在php中第一种和第二种的数据结构类似,都是关联数组。

PHP 相关文章推荐
使用VisualStudio开发php的图文设置方法
Aug 21 PHP
php json_encode奇怪问题说明
Sep 27 PHP
基于PHP异步执行的常用方式详解
Jun 03 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
Sep 28 PHP
Web程序工作原理详解
Dec 25 PHP
PHP CURL 内存泄露问题解决方法
Feb 12 PHP
PHP序列化操作方法分析
Sep 28 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
Jun 09 PHP
PHP设计模式之模板模式定义与用法详解
Dec 20 PHP
php和vue配合使用技巧和方法
May 09 PHP
解决在laravel中auth建立时候遇到的问题
Oct 15 PHP
laravel清除视图缓存的代码
Oct 23 PHP
浅析PHP的静态成员函数效率更高的原因
Jun 13 #PHP
单台服务器的PHP进程之间实现共享内存的方法
Jun 13 #PHP
PHPAnalysis中文分词类详解
Jun 13 #PHP
ThinkPHP缓存方法S()概述
Jun 13 #PHP
采用ThinkPHP中F方法实现快速缓存实例
Jun 13 #PHP
浅析ThinkPHP中execute和query方法的区别
Jun 13 #PHP
采用thinkphp自带方法生成静态html文件详解
Jun 13 #PHP
You might like
smarty实例教程
2006/11/19 PHP
跟我学Laravel之请求与输入
2014/10/15 PHP
PHP中phar包的使用教程
2017/06/14 PHP
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
简单快速的实现js计算器功能
2017/08/17 Javascript
js禁止Backspace键使浏览器后退的实现方法
2017/09/01 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
vue将后台数据时间戳转换成日期格式
2019/07/31 Javascript
vue使用codemirror的两种用法
2019/08/27 Javascript
详解从vue-loader源码分析CSS Scoped的实现
2019/09/23 Javascript
Mac下Supervisor进程监控管理工具的安装与配置
2014/12/16 Python
初步探究Python程序的执行原理
2015/04/11 Python
python中使用序列的方法
2015/08/03 Python
Python中基础的socket编程实战攻略
2016/06/01 Python
python实现多线程抓取知乎用户
2016/12/12 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
对python中的logger模块全面讲解
2018/04/28 Python
django-rest-framework 自定义swagger过程详解
2019/07/18 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
2019/08/05 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
东南亚地区最大的购物网站Lazada新加坡站点:Lazada.sg
2016/07/17 全球购物
软件测试英文面试题
2012/10/14 面试题
学校办公室主任职责
2013/12/27 职场文书
《水上飞机》教学反思
2014/04/10 职场文书
优秀员工推荐信
2014/05/10 职场文书
入党转正申请报告
2015/05/15 职场文书
中秋节感想
2015/08/10 职场文书
反腐倡廉学习心得体会范文
2015/08/15 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis