当前位置:  开发笔记 > 编程语言 > 正文

PHP有内置数据结构吗?

如何解决《PHP有内置数据结构吗?》经验,为你挑选了6个好方法。

我正在查看PHP手册,我没有看到大多数语言都有的数据结构部分,例如列表和集合.我只是盲目或PHP没有这样的内置?



1> Vincent..:

PHP中唯一的本机数据结构是数组.幸运的是,数组非常灵活,也可以用作哈希表.

http://www.php.net/array

但是,有一种SPL,它是C++ STL的一种克隆.

http://www.php.net/manual/en/book.spl.php


PHP数组实际上是有序字典.它可以用来表示数组,列表,队列,堆栈,树,使用引用甚至图形.更重要的是它更快.你还能想要什么?
@newday:"有序字典"表示"地图".

2> Frederik Kra..:

PHP通过标准PHP库(SPL)基本扩展提供数据结构,该扩展在PHP 5.0.0中默认可用并编译.

提供的数据结构可用PHP 5> = 5.3.0,包括:

双重链接列表

双向链表(DLL)是在两个方向上相互链接的节点列表.当底层结构是DLL时,迭代器的操作,对两端的访问,节点的添加或删除都具有O(1)的成本.因此,它为堆栈和队列提供了一个不错的实现.

SplDoublyLinkedList类

SplStack类

SplQueue类

堆是遵循heap-property的树状结构:当使用对堆是全局的已实现的compare方法进行比较时,每个节点大于或等于其子节点.

SplHeap类

SplMaxHeap类

SplMinHeap类

SplPriorityQueue类

数组

数组是以连续方式存储数据的结构,可通过索引访问.不要将它们与PHP数组混淆:PHP数组实际上是作为有序哈希表实现的.

SplFixedArray类

地图

地图是包含键值对的数据结构.PHP数组可以看作是从整数/字符串到值的映射.SPL提供从对象到数据的映射.此映射也可用作对象集.

SplObjectStorage类

资料来源:http://php.net/manual/en/spl.datastructures.php



3> Joseph Pecor..:

关联数组可用于大多数基本数据结构哈希表,队列,堆栈.但是如果你想要像树或堆这样的东西我不认为它们默认存在,但我确信在任何地方都有免费的库.

使数组模拟堆栈用于array_push()添加和array_pop()起飞

使数组模拟队列用于array_push()入队和array_shift()出队

关联数组默认为哈希.在PHP中,允许它们将字符串作为索引,以便按预期工作:

$array['key'] = 'value';

最后,您可以使用可能浪费空间的数组来模拟二叉树.如果你知道你将拥有一棵小树,它会很有用.使用线性数组,您可以说任何索引(i)将其左子项放在索引(2i + 1)而将右子项放在索引(2i + 2).

所有这些方法都在很好地涵盖本文就如何使JavaScript数组效仿更高层次的数据结构.



4> RanjanaLK..:

虽然这个问题已经有8年了,但我发布了一个答案,因为PHP 7引入了一个扩展,称为ds提供专用数据结构作为数组的替代.

ds,

使用Ds\命名空间.

有3个接口,即Collection,SequenceHashable

有8类,即Vector,Deque,Queue,PriorityQueue,Map,Set,Stack,和Pair

有关更多信息,请查看手册以及此博客文章包含一些很棒的信息,包括基准测试.



5> Konrad Rudol..:

PHP具有实际上是关联数组的数组,也可以用作集合.与许多解释语言一样,PHP在一个引擎盖下提供所有这些,而不是提供不同的显式数据类型.

例如

$lst = array(1, 2, 3);
$hsh = array(1 => "This", 2 => "is a", 3 => "test");

/编辑:另外,请查看手册.



6> Corey..:

PHP的数组兼作列表和字典.

$myArray = array("Apples", "Oranges", "Pears");
$myScalar = $myArray[0] // == "Apples"

或者将它用作关联数组:

$myArray = array("a"=>"Apples", "b"=>"Oranges", "c"=>"Pears");
$myScalar = $myArray["a"] // == "Apples"

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有