范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

一起学习PHP中的DS数据结构扩展(二)

  上文中我们学习了 DS 扩展中一些比较常用的数据结构,也留下了一些伏笔,比如 Map 中返回 keys() 和 values() 分别返回的是两种特殊的数据结构,也就是我们今天要学习的内容。 向量集合 Vector
  最初见到 Vector 还是在很早的时候在 Java 中见过。不过即使是在 Java 中,这个类型的数据结构的使用也并不多,因为在 Java 中也是以 List 和 Map 为主。我们先来看看这个集合是怎么用的。 $vector = new DsVector(["a", "b", "c"]);  $vector->push("d"); $vector->push(5); $vector->push(6); $vector->push(7); $vector->push(8);  $vector->set(3, "ccc");  var_dump($vector->get(3)); // string(3) "ccc" var_dump($vector->pop()); // int(8)  $vector->unshift(1); $vector->unshift(-1);   var_dump($vector->shift()); // int(-1)  $vector->insert(5, "five"); var_dump($vector->get(5)); // string(4) "five"  var_dump($vector->get(6)); // int(5) $vector->remove(6); var_dump($vector->get(6)); // int(6)  var_dump($vector[4]); // string(3) "ccc"  $vector[4] = "Num 4.";  var_dump($vector[4]); // string(6) "Num 4."  var_dump($vector); // object(DsVector)#1 (8) { //   [0]=> //   int(1) //   [1]=> //   string(1) "a" //   [2]=> //   string(1) "b" //   [3]=> //   string(1) "c" //   [4]=> //   string(6) "Num 4." //   [5]=> //   string(4) "five" //   [6]=> //   int(6) //   [7]=> //   int(7) // }
  它的很多方法和 Map 都是类似的,不过它支持 push()、pop()、shift()、unshift() 这四种方法,也就是分别从尾部和头部添加和取出数据。另外在底层,它使用的总内存会少于使用数组,当分配的内存大小降到到足够低的时候会自动释放内存。对于 get()、set()、push()、pop() 这些方法的操作效率都能达到 O(1) 的水平,而对于 shift()、unshift()、insert()、remove() 这些操作则都是 O(n) 的水平。至于在什么场景下使用就很清晰了,很大的数组使用它可以节约内存,并且一些操作的效率还非常高。
  在 Map 中使用 values() 和 paris() 返回的就都是 Vector 这个类型的集合。 唯一集合 Set
  Set 这个集合结构其实挺常见的,不止是 Java 这些编程语言中,redis 中也有这种存储数据的方式,相信大家不会陌生。和其它结构最显著的区别就是 Set 中的值必须是唯一的。 $set = new DsSet(["a", "b", "c"]); $set->add("d");  $set->add("b");  var_dump($set); // object(DsSet)#2 (4) { //   [0]=> //   string(1) "a" //   [1]=> //   string(1) "b" //   [2]=> //   string(1) "c" //   [3]=> //   string(1) "d" // }
  这个就不多做解释了,相信大家就算没有在代码中用过,也会在 redis 的使用中接触过,业务场景也非常多。在上篇文章中 Map 返回的 keys() 信息就是 Set 结构的,因为 Map 中的键是不能有重复的,包括数字下标的数组其实也都是不能有重复的键值的。 双端队列 Deque
  双端队列其实在表现形式上和 Vector 差不多,同样可以在队列的头尾部进行增加取出操作,不过它有两个指针分别指向队列的头尾部,所以它的 shift() 和 unshift() 的速度也是非常快的 O(1) 级别。 $deque = new DsDeque(["a", "b", "c"]);  $deque->push("d"); $deque->unshift("z");  var_dump($deque); // object(DsDeque)#3 (5) { //     [0]=> //     string(1) "z" //     [1]=> //     string(1) "a" //     [2]=> //     string(1) "b" //     [3]=> //     string(1) "c" //     [4]=> //     string(1) "d" //   }  var_dump($deque->pop()); // string(1) "d" var_dump($deque->shift()); // string(1) "z" 总结
  今天介绍的内容相比上篇文章简单很多,但上篇文章其实也只是测试的代码结果展示的比较多而已。整体的 DataStruct 扩展框架中的数据结构就是这些,就像最开始我们说过的,如果没有特别的需求,只是需要用到栈或队列的话,直接使用 SPL 中的就可以了。而如果有特殊的需求,比如说 Map 这种对象类型,又或者需要一个节约内存的数组,那么 Ds 中的这些数据结构想必会是你的好帮手。
  测试代码:
  https://github.com/zhangyue0503/dev-blog/blob/master/php/2021/02/source/3.一起学习PHP中的DS数据结构扩展(二).php
  参考文档:
  https://www.php.net/manual/zh/book.ds.php

计算机毕业设计SpringBootVue。js在线花店花店app鲜花销售系统开发技术前端vue。jselementUIH5echarts后端springbootmybatis数据库mysql创新点多角色登录双端(appweb)可视化统计图表运行截图Spri计算机毕业设计之SpringBootVue。js知识图谱中药可视化系统需求用户信息管理新用户注册,已有账号再登录,用户注销,用户信息修改。2。中药材信息查询用户可以点击系统给出的或按编码或按药性等条件进行查询,或通过搜索框自主输入想要查询的信息进行中计算机毕业设计之ssmvue。js物业管理系统小程序物业服务小程序功能需求用户端功能健康打卡社区资讯周边服务物业服务周边服务有日需统计家政服务洗衣房周边市场物业服务有物业缴费在线报修房屋出租管理员端功能档案管理物业管理信息管理档案管理居民档案,房计算机毕业设计SpringBootVue。js民宿预订小程序酒店预订小程序开发技术小程序端mpvueweb端vue。jsjava后台springbootmybatis数据库mysql创新点多角色登录在线及时聊天可视化统计图表双端(小程序端web管理端)运计算机毕业设计之Mahout协同过滤算法汽车购票推荐系统开发技术SSH框架MySQL数据库Mahout算法库功能一前台功能模块A用户注册(游客进行该网站需要进行注册方可在系统中进行一系列与预订有关的活动)B票务查询(旅客按出发地到达地查阿里与腾讯各投入1000亿,用实际行动推进共同富裕让一部分人先富起来,总设计师当年说出的这句话,如今实现了。改革开放40年来,中国发生了翻天覆地的变化,已经是全球第二大经济体,人均GDP也突破了1万美元,摆脱了贫困,进入到小康社会百度CEO李彦宏提案智慧养老,工信部这样答复关于智慧养老,工信部发布关于政协第十三届全国委员会第四次会议第3540号(社会管理类249号)提案答复的函。工信部表示,下一步将会同卫生健康委等部门进一步推进智慧健康养老产业发展,互联网养老升级,上海浦东新区浦老惠平台上线随着数字化信息化时代的到来,老年人渴望跨越数字鸿沟,享受智能化时代带来的便捷和高品质生活。在全国第九个重阳节前夕,浦东新区给辖区内所有老人和家属送上了一份大礼浦东新区浦老惠养老服务AlignmentHealthcare创新型保险,破解老龄化困局人口老龄化是世界性的问题,满足数量庞大的老年群体的多方面需求,妥善解决人口老龄化带来的社会问题,事关国家发展大局和百姓福祉。但因身体机能下降,体弱多病,最需要保障的老年群体,往往很NEC聚焦银发经济,推出康养整体解决方案9月27日,2021年中国国际服务贸易交易会(简称服贸会)在北京举行。主题是数字开启未来服务促进发展。NEC(日电(中国)有限公司)作为日本参展企业,携手多款康养产品,亮相服贸会。中国太保构建三大平台,打通医药险壁垒保险与健康有着天然的关联,于保险公司而言,大健康常说常新。8月24日,中国太保披露了五年大健康战略规划,并表示构建三大平台,打通医药险壁垒。大健康时代呼啸而来。中国太保制定2020
在2022年使用iPhone7plus,是一种什么样的体验写在前面本文只代表个人的主观意见,不具有代表性,以一问一答的形式介绍体验感受为主,弱化对硬件和性能测试,毕竟再对6年前的手机跑分也没什么意义。苹果公司在2016苹果秋季新品发布会上截至2021年底,互联网视频年度付费用户达7。1亿中新文娱4月25日电据国家广播电视总局网站消息,2021年全国广播电视行业统计公报今日公布,截至2021年底,互联网视频年度付费用户7。1亿,互联网音频年度付费用户1。5亿,短视频大厂大幅裁员,计算机科学与技术专业还香吗?前段时间,阿里巴巴腾讯相继宣布裁员,消息一经传出,迅速登上微博热搜榜甚至在某些社交媒体上流露出,此轮阿里整体裁员比例高达30。同期,爱奇艺知乎快手等互联网大厂也传出了组织优化的消息5G时代将为智慧消防增速5G时代已经悄悄来临,5G有哪些特点呢?5G特点范围广速度快低功耗低延迟。低延迟和速度快并不是指的同一个东西,速度快指的是传输速度快,而延迟低指的是整个收到请求,传输信息,接受信息介绍一个内网穿透,解决方案没有公网IP让我们的网络设备变成了孤岛,这让远程访问网络设备变得困难重重。当你想要访问自己的nas,对不起你没有公网IP当你要发布自己的网站,对不起你没有公网IP。怎么办?搭建内网电竞旗舰x超级IP!红魔7系列联名变形金刚发布为玩家提供具有非凡体验的产品,是红魔品牌自诞生以来不变的目标。红魔游戏手机在设计屏幕温控性能等方面取得的成果,堪称游戏圈的头号玩家,也赢得了职业选手主播大神,以及忠实用户的青睐。玩指纹门锁还有创新的余地吗?TCL智能锁的指静脉黑科技了解下在最近几年智能家居火速普及,各种智能晾衣架智能窗帘机器智能指纹门锁等等应运而出。但是实际上没有完整的生态都不好用,只有形成闭环之后才能体验完整的智能生活。但是智能指纹门锁却不一样,一台什么样的电视才能叫家中巨幕指挥官?120英寸,这是彩电创新的新境界!4月25日,海信激光电视再次刷新业界上限,带来全球首台110英寸和120英寸全色激光电视,有望成为未来家震撼巨幕的新标杆。向大,行业之大势据统计数从Find到Find7,再从FindX到FindN,OPPO到底在找什么?Find,是一个英文单词,作为动词是发现找的意思作为名词,是有价值或有趣的发现的意思。然而,OPPO将Find作为其高端手机系列的名称,就如同小米的MIX系列华为的Mate系列以及中兴Axon40Ultra发布日期曝光疑似5月9日发布吴京代言作为国内老牌手机产商的中兴,在上一代Axon30系列上首次搭载了屏下摄像头技术,真正意义上做到了完整的全面屏,虽然该技术还有不少缺点,但屏下摄像头技术也是未来手机发展方向的趋势。近手机市场攻守易形,小米的高端之路该转变姿态吗?近几年,冲击高端已然成为国产品牌向前发展的关键词。三星苹果华为之后,小米OPPOvivo等头部厂商接连调整市场布局,势要打赢高端市场关键战役,即便小众品牌魅族也曾表态要全力冲击高端