syaiful6 / headbanger
Headbanger! PHP 数据结构
Requires
- php: >=5.6
Requires (Dev)
- mockery/mockery: ~0.9
- syaiful6/itertools: ~0.1
README
Headbanger
PHP 数据结构或集合。
动机:PHP 只提供了数组和对象作为复合类型。没有列表、哈希表、集合等。PHP 中的数组可以做所有这些。这使得数组操作不可预测,有时充当有序集合、列表、有序映射。这个包旨在提供一些基本的数据结构来填补这个空缺。
安装
composer require syaiful6/headbanger
这个包包含了 Map、List、Set 和 Str 的实现。我们考虑字符串为容器,因为它可以通过数组表示法访问,并且当我们想要迭代字符串时,我们实际上想要迭代字符。
Map
Python 称这为 dict,Ruby 称这为类型 Hash。不管名字如何,这种数据类型可以映射键值对。通常键是唯一的(在一个映射中)。
映射上的主要操作是将值与某个键存储,并根据键提取值。对于给定的键也应有可能删除键值对。
这个包提供了一种数据类型的实现。即 HashMap,它还实现了 Countable、Traversable 和 ArrayAccess。因此,您可以将此实例视为数组。要删除键值对,请使用 unset($hash['somekey'])
注意:HashMap 是无序映射,不允许在迭代期间添加项,替换键值是允许的。遍历映射将仅给出键,您可以使用此键访问值。如果您需要值,请使用 values 方法,如果需要两者,请使用 ```items`` 方法。
$map = new Headbanger\HashMap();
// Add item, or just give map your array or any traversable on constructor
$map['one'] = 1;
$map['two'] = 2;
$map['three'] = 3;
// deleting
unset($map['one']);
// check if item exists
isset($map['one']);
List
列表或序列,表示一个有序值序列,这些值可以在列表中多次出现。将其视为有限序列。目前只提供了一个实现:ArrayList。使用 SplFixedArray 作为其存储。
您可以将 ArrayList 用作 Stack,其中最后添加的元素是第一个检索到的元素(“后进先出”)。使用 push 添加项目,并使用 pop(不带参数)从顶部检索项目。但是不要将 ArrayList 用作 Queue,它们对这种目的效率不高。但是是可能的。
Set
集合是一个无序的、没有重复元素的集合。常见的操作是删除重复条目和成员测试。集合还支持数学运算,如并集、交集、差集等。