怎么在PHP中提高数组中元素查找的效率

  介绍

本篇文章为大家展示了怎么在PHP中提高数组中元素查找的效率,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

<强>提高查找数组元素的效率
1。php in_array方法说明

php查找数组元素是否存在,一般会使用in_array方法。

bool  in_array  (, mixed  needle 美元;,,array  haystack 美元;[,bool  strict 美元;=,FALSE ],)

参数说明:

针待搜索的值,如果针是字符串,比较是区分大小写的。

干草堆
用来比较的数组


严格如果第三个参数严格的值为真则in_array()函数还会检查针的类型是否和干草堆中的相同

返回值
如果找到针则返回真,否则返回错误的。


<强> 2。in_array查找元素效率

当比较的数组干草堆较大时,in_array效率会很低

例子:使用in_array对有10个万个元素的数组进行1000次比较

& lt; php ?   数组$ arr =, ();//,创建10个万个元素的数组   (我=0;美元,美元i<100000;,我+ +美元){   美元才能arr[],=,我美元;   }//,记录开始时间   $ starttime =, getMicrotime ();//,随机创建1000个数字使用in_array比较   美元($ j=0;, j<1000;, $ j + +) {   时间=美元才能str  mt_rand (99999);   in_array才能(str美元,,arr);   }//,记录结束时间   $ endtime =, getMicrotime ();      echo  & # 39; run 时间:& # 39;。(浮动)((endtime -开始时间美元)* 1000)强生# 39;ms
& # 39;;/* *   ,*获取microtime   ,* @return 浮动   ,*/function  getMicrotime () {   ,,列表(sec)美元购买美元,,,=,爆炸(& # 39;,& # 39;,,());   return 才能;(浮动)usec 美元;+,sec美元(浮动);   }   ?在 run 时间:2003.6449432373

使女士用in_array判断元素是否存在,在10个万个元素的数组中比较1000次,运行时间需要约2秒


<强> 3。提高查找元素效率方法

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

例子:使用array_flip先进行键值互换,再使用收取方法判断,在10个万个元素的数组中比较1000次

& lt; php ?   数组$ arr =, ();//,创建10个万个元素的数组   (我=0;美元,美元i<100000;,我+ +美元){   美元才能arr[],=,我美元;   }//,键值互换   $ arr =, array_flip (arr);//,记录开始时间   $ starttime =, getMicrotime ();//,随机创建1000个数字使用收取比较   美元($ j=0;, j<1000;, $ j + +) {   时间=美元才能str  mt_rand (99999);   收取才能(arr (str)美元美元);   }//,记录结束时间   $ endtime =, getMicrotime ();      echo  & # 39; run 时间:& # 39;。(浮动)((endtime -开始时间美元)* 1000)强生# 39;ms
& # 39;;/* *   ,*获取microtime   ,* @return 浮动   ,*/function  getMicrotime () {   ,,列表(sec)美元购买美元,,,=,爆炸(& # 39;,& # 39;,,());   return 才能;(浮动)usec 美元;+,sec美元(浮动);   }   ?在 run 时间:1.2781620025635

使女士用array_flip与收取判断元素是否存在,在10个万个元素的数组中比较1000次,运行时间需要约1.2毫秒


因此,对于大数组进行比较,使用array_flip与收取方法会比in_array效率高很多。

<强>
快速去重
1。使用array_unique方法进行去重

对数组元素进行去重,我们一般会使用array_unique方法,使用这个方法可以把数组中的元素去重。

& lt; php ?   arr 美元;=,阵列(1,1,2,3,3,3,4,4,5,6,7,8,8,9,9,9);   $ arr =, array_unique (arr);   时间=美元arr 元素(arr);   print_r (arr);   祝辞;

输出:

数组   (   [0]才能,=在1   [1],才能=祝辞;2   [2],才能=祝辞;3   [3],才能=祝辞;4   [4],才能=祝辞;5   [5],才能=祝辞;6   [6],才能=祝辞;7   [7]才能,=在8   [8]才能,=在9   )

去重后,键值会不按顺序,可以使用元素把键值重新排序。


<强> 2。使用array_unique方法去重效率

& lt; php ?   数组$ arr =, ();//,创建100000个随机元素的数组   (我=0;美元,美元i<100000;,我+ +美元){   美元才能arr [],=, mt_rand (99);   }//,记录开始时间   $ starttime =, getMicrotime ();//,去重   $ arr =, array_unique (arr);//,记录结束时间   $ endtime =, getMicrotime ();      时间=美元arr 元素(arr);      echo  & # 39; unique 数:& # 39;.count (arr)美元强生# 39;& lt; br> & # 39;;   echo  & # 39; run 时间:& # 39;。(浮动)((endtime -开始时间美元)* 1000)强生# 39;ms

怎么在PHP中提高数组中元素查找的效率