返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php中Data Structures扩展的作用是什么
  • 672
分享到

php中Data Structures扩展的作用是什么

2023-06-20 17:06:22 672人浏览 安东尼
摘要

本篇文章为大家展示了PHP中Data Structures扩展的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在 php 中因为数组太过强大,把这些数据结构都囊括进来了,所以不太需要去关注

本篇文章为大家展示了PHP中Data Structures扩展的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

php 中因为数组太过强大,把这些数据结构都囊括进来了,所以不太需要去关注这些数据结构,久而久之这些概念也就淡化了,不是说 PHP 中没有数据结构。

在 PHP 中有个扩展 Data Structures,这个扩展包含了这些常见的 数据结构。

PHP 数据结构

  • 优先级队列 PriorityQueue

  • 双端队列 Deque

  • 队列 FIFO(先进先出)

  • 栈 LIFO(先进后出)

  • 散列表 Hash

  • Set 集合

  • Map 字典

数据结构介绍

优先级队列 PriorityQueue

PriorityQueue 与 Queue 非常相似。 值被推入具有指定优先级的队列中,具有最高优先级的值将始终位于队列的前面。

注意

  • 对于具有相同优先级的值,保留“先进先出”顺序。

  • 迭代 PriorityQueue 是破坏性的,相当于连续弹出操作,直到队列为空。

设置容量

默认容量是 8,可以手动设置容量,这个容量不是指队列的长度,而是说存储空间。再分配容量时确保有足够的内存

如果该值小于或等于当前容量,容量将保持不变。

$queue = new Ds\PriorityQueue(); $queue->allocate(8);
获取容量

当前手动设置了容量时,如果设置的容量大于实际占用容量,则返回设置的容量。反之,返回实际的容量。

$queue = new Ds\PriorityQueue(); // 此时返回默认值 8$queue->capacity();
设置优先级

数值越大优先级越高

$queue = new Ds\PriorityQueue(); $queue->push('value1', 1);$queue->push('value2', 2);
示例
$queue = new Ds\PriorityQueue(); $queue->push('沙僧', 2);$queue->push('唐僧', 5);$queue->push('白龙马', 1);$queue->push('猪八戒', 3);$queue->push('孙悟空', 4);$cout = $queue->count();for($i=0; $i<$cout; $i++) {  echo $queue->pop();  echo PHP_EOL;}
输出
唐僧孙悟空猪八戒沙僧白龙马
应用场景
  • MySQL 查询时为了加快查询速度,避免排序无法使用索引,没有进行排序,在服务端代码层面进行手动排序再返回。

  • 其他应用场景...

双端队列 Deque

有两个指针分别指向头部和尾部。分别可以在头部和尾部进行插入和弹出。

优点
  • 支持数组语法(方括号)。

  • 对于相同数量的值,比数组占用更少的内存。

  • 当其大小下降到足够低时,自动释放分配的内存。

  • get()、set()、push()、pop()、shift()和unshift()都是O(1)。

缺点
  • 设置的容量数值,必须是 2 的幂次方值,默认值是 8。比如2^2

  • insert()和remove()是O(n)。

类方法说明

双端队列 Deque

示例
$deque = new Ds\Deque();$deque->push(...['唐僧', '孙悟空', '猪八戒', '沙僧', '白龙马']);$clone = $deque->copy();$count = $deque->count();echo '头:'.$deque->first().PHP_EOL;echo '尾:'.$deque->last().PHP_EOL;echo '--- 从队尾开始 ----'.PHP_EOL;for($i=0; $i<$count; $i++) {    echo $deque->pop();    echo PHP_EOL;}echo '--- 从队头开始 ----'.PHP_EOL;for($i=0; $i<$count; $i++) {    echo $clone->shift();    echo PHP_EOL;}
输出
头:唐僧尾:白龙马--- 从队尾开始 ----白龙马沙僧猪八戒孙悟空唐僧--- 从队头开始 ----唐僧孙悟空猪八戒沙僧白龙马
应用场景
  • 多种应用场景

队列 FIFO(先进先出)

队列是“先进先出”或“FIFO”集合,它只允许访问队列前面的值。

示例
$queue = new Ds\Queue(); $queue->push('唐僧');$queue->push(...['孙悟空', '猪八戒']);$queue->push(['沙僧', '白龙马']);print_r($queue);
输出
Ds\Queue Object(    [0] => 唐僧    [1] => 孙悟空    [2] => 猪八戒    [3] => Array        (            [0] => 沙僧            [1] => 白龙马        ))

栈 LIFO(先进后出)

Stack 是一个“后进先出”或“LIFO”集合,它只允许访问结构顶部的值。

示例
$Stack = new Ds\Stack(); $Stack->push('唐僧');$Stack->push(...['孙悟空', '猪八戒']);$Stack->push(...['沙僧', '白龙马']);$cout = $Stack->count();for($i=0; $i<$cout; $i++) {    echo $Stack->pop();    echo PHP_EOL;}
输出
白龙马沙僧猪八戒孙悟空唐僧

Map 字典

Map 是键值对 [key=>value] 的顺序集合,与数组相似。 键可以是任何类型,但必须是唯一的。 如果使用相同的键将值添加到地图,后添加的则会替换之前的值。

优点
  • 键和值可以是任何类型,包括对象

  • 支持数组语法。

  • 保留插入顺序。

  • 性能和内存效率与数据相似。

  • 当大小下降到足够低时自动释放分配的内存。

缺点
  • 当对象作为键时,不能转换为数组。

Set 集合

Set 是一系列唯一值,只有一组 key 不存储 value,而且 key 不能重复。

优点
  • 值可以是任何类型,包括对象。

  • 支持数组语法。

  • 保留插入顺序。

  • 当大小下降到足够低时自动释放分配的内存。

  • add()、remove()和contains()复杂度都是O(1)。

缺点
  • 不支持push()、pop()、insert()、shift()或unshift()

  • 如果在被访问的索引之前缓冲区中有被删除的值,则get()为O(n),否则为O(1)。

Map 和 Set 的区别

  • 存储方式不同。Map 存储的是 [key => value] 形式,Set 存储的是 [...keys];

  • Map 和 Set 都是通过 key 来保证有序性的,所以是不允许修改 key 的。

上述内容就是php中Data Structures扩展的作用是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网PHP编程频道。

--结束END--

本文标题: php中Data Structures扩展的作用是什么

本文链接: https://lsjlt.com/news/298843.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • php中Data Structures扩展的作用是什么
    本篇文章为大家展示了php中Data Structures扩展的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在 PHP 中因为数组太过强大,把这些数据结构都囊括进来了,所以不太需要去关注...
    99+
    2023-06-20
  • php扩展gd是什么
    这篇文章主要介绍“php扩展gd是什么”,在日常操作中,相信很多人在php扩展gd是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php扩展gd是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!ph...
    99+
    2023-06-25
  • PHP中Libevent 扩展有什么用
    这篇文章主要为大家展示了“PHP中Libevent 扩展有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“PHP中Libevent 扩展有什么用”这篇文章吧...
    99+
    2024-04-02
  • php要用swoole扩展的原因是什么
    这篇文章主要介绍“php要用swoole扩展的原因是什么”,在日常操作中,相信很多人在php要用swoole扩展的原因是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php要用swoole扩展的原因是什么...
    99+
    2023-07-05
  • redis扩展有什么作用
    redis扩展的作用:解决应用服务器的cpu和内存压力。减少io的读操作,减轻io的压力。关系型数据库的扩展性不强,难以改变表结构,而redis不会。...
    99+
    2024-04-02
  • php扩展编写的方法是什么
    编写 PHP 扩展的方法通常有以下几个步骤:1. 确定扩展的功能:首先确定要扩展的功能,即需要为 PHP 提供哪些新的功能或功能增强。2. 创建扩展的源代码文件:在 PHP 的源代码目录中创建一个新的目录,并在其中创建扩展的源代码文件。...
    99+
    2023-08-11
    php
  • access中扩展名指的是什么
    小编给大家分享一下access中扩展名指的是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!2007版本以前的access文件...
    99+
    2024-04-02
  • PHP 函数库的扩展机制是什么?
    php 函数库扩展机制允许开发人员创建自定义函数,并将其添加到 php 内核,从而提供灵活性,适应广泛的用例。需要创建共享对象(.so 文件),编写 c 代码并编译为共享对象,注册扩展,...
    99+
    2024-04-10
    扩展机制 php 函数库 git
  • VUE中data配置的作用是什么
    本文小编为大家详细介绍“VUE中data配置的作用是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“VUE中data配置的作用是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.data是什么?有什么作用...
    99+
    2023-07-05
  • Fastai中data block API的作用是什么
    Fastai中的data block API的作用是简化数据处理和加载的过程,帮助用户更快地准备和加载数据并创建DataLoader...
    99+
    2024-04-02
  • 怎么使用PHP中的runkit扩展
    小编给大家分享一下怎么使用PHP中的runkit扩展,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一起学习PHP的runkit扩展如何使用在 PHP 运行的时候,...
    99+
    2023-06-15
  • css文件用的是什么扩展名
    这篇文章主要介绍了css文件用的是什么扩展名,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。css样式表文件的扩展名是“.css”,css样式表文件是用于装CSS代码的文本文件...
    99+
    2023-06-06
  • PHP中DirectIO操作文件扩展的用法大全
    关于 PHP 的文件操作,我们也将是通过一系列的文章来进行学习。今天我们先学习的是一个很少人使用过,甚至很多人根本不知道的扩展,它与我们日常的文件操作有些许的不同。不过这些差别并不是...
    99+
    2024-04-02
  • Zookeeper扩展的方法是什么
    这篇文章主要介绍“Zookeeper扩展的方法是什么”,在日常操作中,相信很多人在Zookeeper扩展的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Zookeeper扩展的方法是什么”的疑惑有所...
    99+
    2023-06-05
  • 什么是PostgreSQL的扩展,如何安装和管理扩展
    PostgreSQL的扩展是一种可以添加额外功能或功能性的模块,可以通过安装和加载来扩展PostgreSQL的功能。扩展可以包括新的...
    99+
    2024-04-09
    PostgreSQL
  • 在PHP中操作文件的扩展属性
    在操作系统的文件中,还存在着一种我们可以自己定义的文件属性。这些属性不是保存在文件内容中,也不是直接可以通过 ls -al 所能看到的内容。它们可以将一个键值对信息永久得关联到文件上...
    99+
    2024-04-02
  • PHP自定义扩展的钩子功能是什么
    本篇内容主要讲解“PHP自定义扩展的钩子功能是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP自定义扩展的钩子功能是什么”吧!php生命周期大概5个阶段,模块初始化阶段php_modul...
    99+
    2023-06-22
  • 怎么在php中使用APCu扩展
    这篇文章给大家介绍怎么在php中使用APCu扩展,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。APCu 扩展APCu 扩展是 APC 扩展的升级,APC 扩展已经不维护了。这两套扩展其实都是基于 opcode cach...
    99+
    2023-06-15
  • html文件的扩展名是什么
    这篇文章主要介绍“html文件的扩展名是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“html文件的扩展名是什么”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • javascript文档的扩展名是什么
    这篇文章主要介绍“javascript文档的扩展名是什么”,在日常操作中,相信很多人在javascript文档的扩展名是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ja...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作