php 自定义求数组差集,效率比自带的array_diff函数还要快(转)
<?php
function array_different($array_1, $array_2) {
$array_2 = array_flip($array_2); //将数组键值调换
foreach ($array_1 as $key => $val) {
if (isset($array_2[$val])) {
unset($array_1[$key]);
}
}
return $array_1;
}
function runtime($mode = 0) {
static $t;
if (!$mode) {
$t = microtime();
return;
}
$t1 = microtime();
list($m0, $s0) = explode(" ", $t);
list($m1, $s1) = explode(" ", $t1);
return sprintf("%.3f", ($s1 + $m1 - $s0 - $m0) * 1000);
}
$array_1 = array();
$array_2 = array();
for ($i = 0; $i <= 5000; $i++) {
$array_1[$i] = mt_rand(0, 100);
$array_2[$i] = mt_rand(0, 100);
}
runtime(); //计时开始
$arr_diff = array_diff($array_1, $array_2);
echo runtime(1); //计时结束并输出计时结果
echo '<br>';
foreach ($arr_diff as $key => $val) {
echo $val.',';
}
runtime(); //计时开始
$arr_diff2 = array_different($array_1, $array_2);
echo runtime(2); //计时结束并且输出计时结果
foreach ($arr_diff2 as $key => $val) {
echo $val.',';
}
php 自定义求数组差集,效率比自带的array_diff函数还要快(转)的更多相关文章
- JS求数组差集的几种方法
第一种:如果不考虑IE8的兼容性完全可以使用Foreach ,此方法求出arr1 减去 arr2的差集, arr1 = [1,2,3,4];arr2 = [1,2,3]; var subSet = f ...
- 求数组差/交集函数-php数组函数(二)
求数组差集函数 函数只检查了多维数组中的一维.可以用 array_diff($array1[0], $array2[0]) 检查更深的维度. u:自定义函数比较,a(association):同时比较 ...
- 利用Underscore求数组的交集、并集和差集
1 数组交集函数——intersection 数组的交集是指包含多个数组中的共同元素的一个数组,求数组的交集就是找出给定数组中的共有元素. 下面实现一个求两个数组交集的函数. 判断数组是够包含指定值, ...
- javascript 数组求交集/差集/并集/过滤重复
最近在小一个小程序项目,突然发现 javscript 对数组支持不是很好,连这些基本的功能,都还要自己封装.网上查了下,再结合自己的想法,封装了一下,代码如下. //数组交集 Array.protot ...
- C陷阱:求数组长度
// 这是一篇导入进来的旧博客,可能有时效性问题. 程序中,当我们建立了一个int型数组:int a[]={1,2,3,4,5,6};随后我们可能需要知道它的长度,此时可以用这种方法:length = ...
- java-IO流-字符流-FileReader、FileWriter、自定义小数组的拷贝、BufferedReader、BufferedWriter、readLine()和newLine()方法、LineNumberReader、使用指定的码表读写字符
###21.01_IO流(字符流FileReader) * 1.字符流是什么 * 字符流是可以直接读写字符的IO流 * 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要 ...
- Task 4 求数组的连续子数组的最大和(团队合作)
小组成员:李敏.刘子晗 1.设计思想:由于已经做过这个题目,只要对之前的程序加上相应的测试和约束即可.我们两个人一起商议后,决定了程序的主框架和并列出了最终可以实现的功能.先要定义数组长度和上下限的变 ...
- [LeetCode] Find Peak Element 求数组的局部峰值
A peak element is an element that is greater than its neighbors. Given an input array where num[i] ≠ ...
- struts2:遍历自定义字符串数组,遍历Action实例所引用对象中的数组
在struts2:OGNL表达式,遍历List.Map集合:投影的使用一文中已经讲述了OGNL遍历List.Map集合等功能. 本文简单写一个遍历数组的示范程序. 1. 遍历自定义字符串数组 < ...
随机推荐
- jQuery--引入,基本语法,以及常用事件
一.初识jQuery jQuery是一个JavaScript函数库.主要包含的功能有:HTML元素的选取.操作,CSS操作,HTML事件函数,JavaScript特效和动画,HTML DOM遍历和修改 ...
- cocod2d-x 之 HelloWorld
cocos2d-x 2.2创建项目 进入cocos2d-x-2.2/tools/project-creator,运行命令 python create_project.py -project MyGam ...
- SQL 测试
1.SQL 指的是? 您的回答:Structured Query Language 2.哪个 SQL 语句用于从数据库中提取数据? 您的回答:SELECT 3.哪条 SQL 语句用于更新数据库中的数据 ...
- Python Tutorial 学习(三)--An Informal Introduction to Python
3.1. 将Python用作计算器 3.1.1. Numbers 数 作为一个计算器,python支持简单的操作, '+','-','*','/'地球人都知道的加减乘除. ()可以用来改变优先级,同数 ...
- Connect mysql on Linux from Windows
ON LINUX: 1 sudo apt-get install mysql-server 2 sudo apt-get install python-dev 3 sudo apt-get insta ...
- 提高Order by语句查询效率的两个思路
提高Order by语句查询效率的两个思路 2011-03-01 13:07 水太深 ITPUB 字号:T | T 在MySQL数据库中,Order by语句的使用频率是比较高的.但是众所周知,在使用 ...
- Java中权限修饰符public、private、protected和default的区别
1.public 可以修饰类.成员变量和成员函数,没有任何限制,同一个包中,或者不同包中的类都可以自由访问 2.private 可以修饰成员变量和成员函数,只能在本类中使用 3.default (不写 ...
- MFC 如何改变对话框按钮上的文字
原文地址:http://blog.163.com/wenxianliang08@126/blog/static/8358326320110300643282/ 什么是标记菜单 如何标记菜单 如何 ...
- .NET EntityFramework
http://www.cnblogs.com/lsxqw2004/archive/2009/05/31/1495240.html http://www.cnblogs.com/flowwind/p/3 ...
- Prime Path
poj3126:http://poj.org/problem?id=3126 题意:给你两个数n,k,两个数都是四位数的素数.现在让你改变n的一位数,让n变成另外一个素数.然后把这个素数在改变其中的以 ...