判断元素是否存时,使用isset会比in_array快得多
情境
有时候,我们需要判断一个元素是否存在于已有数据中(以此来获得非重复值),这时候,使用isset来判断会比in_array快得多很多!!
测试
1)准备测试数据
$exists_a = [];
$exists_b = [];
$check = []; for ($i=0,$len=100000; $i<$len; $i++)
{
$check[] = $i;
} for ($i=0,$len=10000; $i<$len; $i++)
{
$rnd = round(0,100000);
$exists_a[] = $rnd;
$exists_b[$rnd] = 1;
}
2)使用in_array做判断验证
$result = [];
$start_time = microtime(true);
foreach ($check as $key => $value)
{
if (!in_array($value, $exists_a))
{
$result[] = $value;
}
}
$end_time = microtime(true);
echo '使用in_array验证元素是否存在耗时:' . ($end_time - $start_time), '秒<hr/>';
结果:// 使用in_array验证元素是否存在耗时:10.537812948227秒
3)使用isset做判断验证
$result = [];
$start_time = microtime(true);
foreach ($check as $key => $value)
{
if (!isset($exists_b[$value]))
{
$result[] = $value;
}
}
$end_time = microtime(true);
echo '使用isset验证元素是否存在耗时:' . ($end_time - $start_
结果:// 使用isset验证元素是否存在耗时:0.018424034118652秒
补充
使用 array_key_exists 判断
<?php
$exists = [];
$check = []; for ($i=0,$len=100000; $i<$len; $i++)
{
$check[] = $i;
} for ($i=0,$len=10000; $i<$len; $i++)
{
$rnd = round(0,100000);
$exists[$rnd] = $rnd;
} $result = [];
$start_time = microtime(true);
foreach ($check as $key => $value)
{
if (array_key_exists($value, $exists))
{
$result[] = $value;
}
}
$end_time = microtime(true);
echo '使用array_key_exists验证元素是否存在耗时:' . ($end_time - $start_time), '秒<hr/>';
?>
结果:// 使用array_key_exists验证元素是否存在耗时:0.022138833999634秒
总结
尽量少用in_array,isset 和 array_key_exists 会比 in_array 快得多很多!!
判断元素是否存时,使用isset会比in_array快得多的更多相关文章
- javascript判断元素存在和判断元素存在于实时的dom中的方法
今天(周六)下午我在公司加班时不知道要干什么,就打开公司的一个wordpress项目网站,想看下之前自己做的一个网页是否有问题. 打开网站首页,我习惯性的打开了chrome的调试工具,然后鼠标开始滚动 ...
- 判断元素16种方法expected_conditions
前言 标签(空格分隔): 判断元素 经常有小伙伴问,如何判断一个元素是否存在,如何判断alert弹窗出来了,如何判断动态的元素等等一系列的判断,在selenium的expected_condition ...
- javascript和jquery如何判断元素是否存在最佳。
在传统的Javascript里,当我们对某个页面元素进行某种操作前,最好先判断这个元素是否存在.原因是对一个不存在的元素进行操作是不允许的.例如: document.getElementById(&q ...
- 判断元素(expected_conditions)
判断元素 如何判断一个元素是否存在,如何判断 alert 弹窗出来了,如何判断动态的元素等等一系列的判断,在 selenium 的 expected_conditions 模块收集了一系列的场景判断方 ...
- selenium常用的API(七)判断元素是否可见
web页面不可见的元素虽不在页面上显示,但是存在于DOM树中,这些元素webdriver也能找到. element.is_displayed()方法可以判断元素是否在页面上显示,如果显示返回True, ...
- 如何判断元素是否在可视区域ViewPort
个性签名: 生如夏花,逝如冬雪:人生如此,何悔何怨. 前言: 经常需要计算元素的大小或者所在页面的位置,offsetWidth,clientWidth,scrollWidth,scrollTop这几个 ...
- pandas DataFrame的新增行列,修改、删除、筛选、判断元素以及转置操作
1)指定行索引和列索引标签 index 属性可以指定 DataFrame 结构中的索引数组, columns 属性可以指定包含列名称的行, 而使用 name 属性,通过对一个 DataFrame 实 ...
- JQuery判断元素是否存在
JQuery判断元素是否存在的原理与javascript略有不同,因为$选择器选择的元素无论是否存在都不会返回null或undefined,要使用JQuery判断元素是否存在,只能使用length属性 ...
- jQuery如何判断元素是否是隐藏的?
jQuery函数简介: is(expr) 用一个表达式来检查当前选择的元素集合,如果其中至少有一个元素符合这个给定的表达式就返回true. 如果没有元素符合,或者表达式无效,都返回'false'. 注 ...
随机推荐
- Reusable async validation for WPF with Prism 5
WPF has supported validation since the first release in .NET 3.0. That support is built into the bin ...
- linux系统Qt实现简单的任务管理器
继续上次的操作系统课设,这次需要设计一个简单的任务管理器,大部分人选择GTK来实现,我剑走偏锋,使用Qt来完成这个任务. 用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数.由于 ...
- How MapReduce Works
转自:http://blog.csdn.net/luyee2010/article/details/8624470 一.从Map到Reduce MapReduce其实是分治算法的一种实现,其处理过程亦 ...
- android 向服务器上传
采用数据流的格式向服务器上传. 代码如下: private void upload(String requestURL) { //参数requestU ...
- js 获取单选框和复选框的值和js dom方法给单选框和多选框赋值
获取单选框框值的方法 function getRadioRes(Name){ var rdsObj = document.getElementsByName(Name); var checkVal = ...
- C++ STL Maps
Maps定义 --> 个人理解为python的字典 C++ Maps are sorted associative containers the contian unique key/value ...
- (笔记)Mysql命令use:使用数据库
use命令可以让我们来使用数据库. use命令格式: use <数据库名>; 例如,如果xhkdb数据库存在,尝试存取它: mysql> use xhkdb;屏幕提示:Datab ...
- VIM下的普通模式的相关知识
什么为一次操作? 从进行插入模式开始,直到返回普通模式为止,在此期间的任何修改都视为一次操作: 使用 u 可以撤销最新的修改: 所以呢,控制好在插入模式的操作就可以控制好撤销命令的粒度: 另外,最 ...
- 性能优化系列三:JVM优化
一.几个基本概念 GCRoots对象都有哪些 所有正在运行的线程的栈上的引用变量.所有的全局变量.所有ClassLoader... 1.System Class.2.JNI Local3.JNI Gl ...
- e816. 创建工具栏
A toolbar can be either horizontal or vertical. When the orientation is horizontal, the objects in t ...