本篇文章为大家展示了怎么在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中提高数组中元素查找的效率