php spl库-定长数组

简介: php spl库-定长数组

php SPL库是用于解决典型问题(standard problems)的一组接口与类的集合。


本文主要讲定长数组(SplFixedArray)


定长数组可以产生一个正常数组,不同的是,该数组是固定的,数组不能超过长度,它的速度比一般的数组快,定长数组只能是索引数组


定义一个php定长数组(php5.3之后spl已经成为了php内核的一部分,不需要额外安装即可直接使用)

$arraynewSplFixedArray(5);

$array[0]=1;//定义数组[0]值为1

$array['aaa']=1;//非数字将出错

$array->setSize(10);//修改数组长度

var_dump($array);

其他方法可进入php官方文档查看:http://php.net/manual/zh/class.splfixedarray.php


一下是spl定长数组与普通数组的效率比对:

ini_set('memory_limit','2048M');//防止内存不足,临时更改内存上限

for($size= 1000; $size< 50000000; $size*= 2) {

    echoPHP_EOL . "Testing size: $size". PHP_EOL;

    for($s= microtime(true), $container= Array(), $i= 0; $i$size$i++) $container[$i] = NULL;

    echo"Array(): ". (microtime(true) - $s) . PHP_EOL;

 

    for($s= microtime(true), $containernewSplFixedArray($size), $i= 0; $i$size$i++) $container[$i] = NULL;

    echo"SplArray(): ". (microtime(true) - $s) . PHP_EOL;

}

精确度有差,应该是测试环境,可自测,官方解释是

数据量小1000左右

定长数组写入比php数组快15%,读取快5%;

数据量大,51w条数据时

定长数组写入比php数组快33%,读取快10%;


Testing size: 1000

Array(): 0.00027203559875488

SplArray(): 0.0007932186126709


Testing size: 2000

Array(): 0.00049781799316406

SplArray(): 0.00032687187194824


Testing size: 4000

Array(): 0.0010740756988525

SplArray(): 0.00073003768920898


Testing size: 8000

Array(): 0.0021700859069824

SplArray(): 0.0016100406646729


Testing size: 16000

Array(): 0.004626989364624

SplArray(): 0.0036690235137939


Testing size: 32000

Array(): 0.0095100402832031

SplArray(): 0.0072238445281982


Testing size: 64000

Array(): 0.016055822372437

SplArray(): 0.0084800720214844


Testing size: 128000

Array(): 0.024579048156738

SplArray(): 0.016443967819214


Testing size: 256000

Array(): 0.0483078956604

SplArray(): 0.038909912109375


Testing size: 512000

Array(): 0.10647821426392

SplArray(): 0.074150085449219


Testing size: 1024000

Array(): 0.22535705566406

SplArray(): 0.14000296592712


Testing size: 2048000

Array(): 0.42199611663818

SplArray(): 0.29096388816833


Testing size: 4096000

Array(): 0.88509798049927

SplArray(): 0.81293106079102


目录
相关文章
|
8月前
|
PHP
php数组随机排序
PHP中对数据进行随机排序
|
14天前
|
存储 PHP 数据库
【PHP开发专栏】PHP数组操作与常见函数
【4月更文挑战第29天】本文介绍了PHP中的数组及其操作,包括定义与初始化、访问与修改、遍历。还探讨了常用的数组函数,如count()、in_array()、array_push/pop()、array_shift/unshift()、array_merge()、array_keys/values()以及sort()和rsort(),帮助开发者更有效地处理和操作数组。
|
2月前
|
数据采集 存储 JavaScript
PHP爬虫技术:利用simple_html_dom库分析汽车之家电动车参数
本文旨在介绍如何利用PHP中的simple_html_dom库结合爬虫代理IP技术来高效采集和分析汽车之家网站的电动车参数。通过实际示例和详细说明,读者将了解如何实现数据分析和爬虫技术的结合应用,从而更好地理解和应用相关技术。
PHP爬虫技术:利用simple_html_dom库分析汽车之家电动车参数
php案例:自己写个数组转换成对象 对象转换成数组的的功能出来吧
php案例:自己写个数组转换成对象 对象转换成数组的的功能出来吧
php案例:自己写个数组转换成对象 对象转换成数组的的功能出来吧
|
4月前
|
JSON PHP 数据格式
php 删掉空的数组 json数据. 空数据(false 0 ““ null)
php 删掉空的数组 json数据. 空数据(false 0 ““ null)
php 删掉空的数组 json数据. 空数据(false 0 ““ null)
|
10月前
|
存储 PHP
php使用数组存储用户数据进行登录的封装函数
php使用数组存储用户数据进行登录的封装函数
47 0
|
5月前
|
数据采集 监控 JavaScript
巧用简单工具:PHP使用simple_html_dom库助你轻松爬取JD.com
本文将介绍如何使用PHP语言和一个简单的第三方库simple_html_dom来爬取JD.com的商品信息。simple_html_dom是一个轻量级的HTML解析器,它可以方便地从HTML文档中提取元素和属性,而无需使用正则表达式或DOM操作。本文将通过一个实例来展示如何使用simple_html_dom库来爬取JD.com的商品名称、价格、评分和评论数,并将结果保存到CSV文件中。本文还将介绍如何使用代理IP技术来避免被目标网站封禁或限制。
巧用简单工具:PHP使用simple_html_dom库助你轻松爬取JD.com