博客列表 >PHP提高in_array查找元素的方法

PHP提高in_array查找元素的方法

大鱼
大鱼原创
2018年04月13日 14:16:48796浏览

<?php
$arr = array();// 创建10万个元素的数组for($i=0; $i<100000; $i++){
   $arr[] = $i;}// 记录开始时间$starttime = getMicrotime();// 随机创建10000个数字使用in_array比较for($j=0; $j<10000; $j++){
   $str = mt_rand(1,99999);
   in_array($str, $arr);}// 记录结束时间$endtime = getMicrotime();echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>';/**
* 获取microtime
* @return float
*/function getMicrotime(){
   list($usec, $sec) = explode(' ', microtime());
   return (float)$usec + (float)$sec;}?>

run time:7003.6449432373ms

我们可以先使用array_flip进行键值互换,然后使用isset方法来判断元素是否存在,这样可以提高效率。

<?php
$arr = array();// 创建10万个元素的数组for($i=0; $i<100000; $i++){
   $arr[] = $i;}// 键值互换$arr = array_flip($arr);// 记录开始时间$starttime = getMicrotime();// 随机创建1000个数字使用isset比较for($j=0; $j<1000; $j++){
   $str = mt_rand(1,99999);
   isset($arr[$str]);}// 记录结束时间$endtime = getMicrotime();echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>';/**
* 获取microtime
* @return float
*/function getMicrotime(){
   list($usec, $sec) = explode(' ', microtime());
   return (float)$usec + (float)$sec;}?>

run time:2.2781620025635ms


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议