array_merge()的使用案例分析

  介绍

这篇文章主要介绍了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()的使用案例分析