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


目录
相关文章
|
1月前
|
存储 数据处理 PHP
深入浅出PHP编程之数组操作技巧
【10月更文挑战第30天】在PHP编程的海洋里,数组是一艘承载着数据结构的小船,掌握其操控之道,能让开发者在编码的旅程中乘风破浪。本文将带你领略数组的强大功能,从基础使用到高级应用,一步步揭开数组操作的神秘面纱。准备好你的航海装备,让我们启航吧!
39 4
|
21天前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
41 4
|
27天前
|
存储 缓存 搜索推荐
优化PHP数组性能
优化PHP数组性能
40 8
|
27天前
|
算法 搜索推荐 Java
05 一文解决PHP数组操作
路老师带你深入PHP世界,从数组的基础知识讲起,包括数组的创建、赋值、类型(数字索引数组与关联数组)、多维数组,以及常用数组函数如遍历、统计、查询、添加、删除重复元素和排序等。实例讲解,轻松上手。下期预告:PHP面向对象。
14 2
|
3月前
|
存储 API PHP
php学习笔记-php数组的创建和使用,数组常用函数-day03
关于PHP数组的创建、使用以及常用函数的详细学习笔记。
php学习笔记-php数组的创建和使用,数组常用函数-day03
|
3月前
|
存储 PHP
PHP编程中的数组操作技巧
【9月更文挑战第28天】在PHP编程中,数组是一种基础且强大的数据结构,它可以存储多个值,并且允许我们使用键来访问这些值。本文将介绍一些实用的PHP数组操作技巧,包括创建数组、遍历数组、排序数组和合并数组等。通过掌握这些技巧,你将能够更高效地处理数据和解决实际问题。
|
2月前
|
Shell 网络安全 数据安全/隐私保护
suuk-s.php.jpg-python 库劫持
suuk-s.php.jpg-python 库劫持
29 0
|
3月前
|
存储 数据处理 PHP
深入理解PHP中的数组
【9月更文挑战第3天】在PHP编程中,数组扮演着不可或缺的角色。它们不仅提供了一种灵活的方式来存储和操作数据,还极大地丰富了开发者处理复杂信息结构的能力。本文将带你深入了解PHP数组的基础知识、高级特性以及如何高效地利用数组来简化代码逻辑,提升开发效率。
|
3月前
|
设计模式 存储 算法
PHP中的设计模式:策略模式的深入解析与应用在软件开发的浩瀚海洋中,PHP以其独特的魅力和强大的功能吸引了无数开发者。作为一门历史悠久且广泛应用的编程语言,PHP不仅拥有丰富的内置函数和扩展库,还支持面向对象编程(OOP),为开发者提供了灵活而强大的工具集。在PHP的众多特性中,设计模式的应用尤为引人注目,它们如同精雕细琢的宝石,镶嵌在代码的肌理之中,让程序更加优雅、高效且易于维护。今天,我们就来深入探讨PHP中使用频率颇高的一种设计模式——策略模式。
本文旨在深入探讨PHP中的策略模式,从定义到实现,再到应用场景,全面剖析其在PHP编程中的应用价值。策略模式作为一种行为型设计模式,允许在运行时根据不同情况选择不同的算法或行为,极大地提高了代码的灵活性和可维护性。通过实例分析,本文将展示如何在PHP项目中有效利用策略模式来解决实际问题,并提升代码质量。
|
4月前
|
安全 PHP 开发者
PHP中的数组操作技巧
【8月更文挑战第29天】在PHP编程中,数组是一个基本且强大的数据结构。本文将通过浅显易懂的语言和生动的比喻,带你深入理解PHP数组的操作技巧。我们将一起探讨如何高效地使用数组函数,以及如何通过这些技巧来优化你的代码。无论你是PHP初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息。让我们一起探索数组的世界,发现它的无限可能!