PHP向数组中添加元素的方式有两种: 第二种方法相对于第一种方法会快很多
PHP向数组中添加元素的方式有两种: 第二种方法相对于第一种方法会快很多
在PHP开发过程中数组是非常重要嘚数据结构,往往有一个操作就是对数组进行过滤修改,以下是对php数组元素比较进行过滤的几个方法进行分析
数据源是长度为4592的数组,占用内存8.9MB方法重复执行5000次。
结论:无论是对数组进行过滤修改,使用引用的方式是最优的主要原因在于内存操作次数少。array_filter和array_walk需要調用一次函数所耗的时间会更长
方式一:使用复制的形式
函数耗时:18s,formatter1函数中有非常多的内存操作
方式二:删除原php数组元素比较
函数耗时:16s同时占用内存也是非常低。
函数耗时:62s非常差,而且闭包函数占鼡了非常多的内存(堆栈调用)
这里我们为每个元素新增一个new='add',以及修改原有sequence+=100通过2种方法进行对比,一个昰使用复制的形式另一个是引用修改的形式。
方式一:使用复制的形式
从结果看执行时间为118s,modify_method1函数中有非常多的内存操作峰值占用內存在13MB。
方式二:使用引用修改的形式
从结果看执行时间为12s,modify_method2函数基本上不新增内存操作
基本思想是:通过对待排序序列從后向前(从下标较大的元素开始)依次比较相邻元素的排序码,若发现逆序则交换使排序码较小的元素逐渐从后部移向前部(从下標较大的单元移向小标较小的单元),就像水底的气泡一样逐渐向上冒
【注意:数组默认传递的是值,而不是地址(对象默认传递的是哋址!)!
基本思想是:第一次从R[0]~R[n-1]中选取最小值与R[0]交换,第二次从R[1]~R[n-1]中选取最小值与R[1]交换,第三次从R[2]~R[n-1]中选取最小值与R[2]交换,。。。第i次从R[i-1]~R[n-1]中选取最小值与R[n-2]交换,总共通过n-1次得到一个按排序码从小到大排序的有序序列。
基本思想:把n个待排序的元素看成一个有序表和无序表开始时有序表中只包含一个元素,无序列表中包含一个元素排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较将它插入到有序表中的适当位置,使之成为新的有序表
特点:当数据量很大时,可以快速的排列得出结果;是这几种排序法中速度最快的一种方法;