介绍
这篇文章主要介绍了array_merge()的使用案例分析,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
<强>四种合并数组的方式对比强>
四种常见的合并数组的方式对比
<强>写代码强>
我们知道array_merge()和运算符+都可以拼接数组
<强>创建一个类强>
ArrayMerge ()
●eachOne()循环体使用array_merge()合并
●eachTwo()循环体结束后使用array_merge()合并
●eachThree()循环体嵌套实现数组合并
●eachFour()循环体使用运算符+拼接合并
●getNiceFileSize()将内存占用转化成人类可读的方式
/* * *类ArrayMerge */类ArrayMerge {/* * * @param int *美元 * @return数组 */公共静态函数eachOne (int *美元):数组 { 一美元=[]; $ b=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9); ($ i=0;美元我& lt;$ *;$我+ +){ 一美元=array_merge (a, b)美元; } 返回一个美元; }/* * * @param int *美元 * @return数组 */公共静态函数eachTwo (int *美元):数组 { 一美元=[[]]; $ b=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9); ($ i=0;美元我& lt;$ *;$我+ +){ []=b美元; } 返回array_merge(…美元); }/* * * @param int *美元 * @return数组 */公共静态函数eachThree (int *美元):数组 { 一美元=[]; $ b=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9); ($ i=0;美元我& lt;$ *;$我+ +){ foreach (b项美元){ []=美元项目; } } 返回一个美元; }/* * * @param int *美元 * @return数组 */公共静态函数eachFour (int *美元):数组 { 一美元=[]; $ b=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9); ($ i=0;美元我& lt;$ *;$我+ +){ a=b + $美元; } 返回一个美元; }/* * *转化内存信息 *字节(@param美元 * @param bool binaryPrefix美元 * @return字符串 */公共静态函数getNiceFileSize (int字节,美元binaryPrefix=true): ?字符串 { 如果(binaryPrefix美元){ 单位美元=阵列(& # 39;b # 39; & # 39;简约# 39;,& # 39;mib # 39;, & # 39;雄猫# 39;,& # 39;tib # 39;, & # 39;加以# 39;); if($字节===0){ 返回& # 39;0 & # 39;。单位美元[0]; } 返回@ round($字节/(1024 * * ($ i=地板(日志(1024字节,)))), 2)。& # 39;& # 39;。(单位美元((int)美元我)? ?& # 39;b # 39;); } 单位美元=阵列(& # 39;b # 39; & # 39; kb # 39;, & # 39; mb # 39;, & # 39; gb # 39;, & # 39;结核病# 39;,& # 39;pb # 39;); if($字节===0){ 返回& # 39;0 & # 39;。单位美元[0]; } 返回@ round($字节/(1000 * * ($ i=地板(日志(1000字节,)))), 2)。& # 39;& # 39;。(单位美元((int)美元我)? ?& # 39;b # 39;); } }
<强>使用强>
先分配多点内存
输出内存占用,合并后的数组长度,并记录每一步的用时
报错(& # 39;memory_limit& # 39; & # 39; 4000年猴# 39;); $ timeOne=microtime(真正的); $=ArrayMerge:: eachOne (10000); 回声& # 39;计数eachOne结果| & # 39;。count ($)。PHP_EOL; 回声& # 39;内存eachOne结果| & # 39;。ArrayMerge: getNiceFileSize (memory_get_usage(真正的))。PHP_EOL; $ timeTwo=microtime(真正的); $ b=ArrayMerge: eachTwo (10000); 回声& # 39;计数eachTwo结果| & # 39;。count ($ b)。PHP_EOL; 回声& # 39;内存eachTwo结果| & # 39;。ArrayMerge: getNiceFileSize (memory_get_usage(真正的))。PHP_EOL; $ timeThree=microtime(真正的); $ c=ArrayMerge: eachThree (10000); 回声& # 39;计数eachThree结果| & # 39;。count ($ c)。PHP_EOL; 回声& # 39;内存eachThree结果| & # 39;。ArrayMerge: getNiceFileSize (memory_get_usage(真正的))。PHP_EOL; $ timeFour=microtime(真正的); $ d=ArrayMerge: eachFour (10000); 回声& # 39;计数eachFour结果| & # 39;。count ($ d)。PHP_EOL; 回声& # 39;内存eachFour结果| & # 39;。ArrayMerge: getNiceFileSize (memory_get_usage(真正的))。PHP_EOL; $ timeFive=microtime(真正的); 回声PHP_EOL; 回声& # 39;eachOne | & # 39;。(timeTwo - timeOne美元)。PHP_EOL; 回声& # 39;eachTwo | & # 39;。(timeThree - timeTwo美元)。PHP_EOL; 回声& # 39;eachThree | & # 39;。(timeFour - timeThree美元)。PHP_EOL; 回声& # 39;eachFour | & # 39;。(timeFive - timeFour美元)。PHP_EOL; 回声PHP_EOL;
<强>结果强>
eachOne结果| 100000计数 内存eachOne结果| 9 MiB 数eachTwo结果| 100000 内存eachTwo结果| 14 MiB 数eachThree结果| 100000 内存eachThree结果| 18 MiB 数eachFour结果| 10 #注意这里 内存eachFour结果| 18 MiB eachOne | 5.21253490448 #循环体中使用array_merge()最慢,而且耗费内存 eachTwo | 0.0071840286254883 #循环体结束后使用array_merge()最快 eachThree | 0.037622928619385 #循环体嵌套比循环体结束后使用array_merge()慢三倍 eachFour | 0.0072360038757324 #看似也很快,但是合并的结果有问题array_merge()的使用案例分析