游戏引擎 / 字典
PHP的字典实现
1.0.1
2021-10-07 21:26 UTC
Requires
- php: ^8.0|^8.1
Requires (Dev)
- phpunit/phpunit: ^9.0
README
为PHP提供快速简单的字典实现。
此包最初从此处移植(并升级)。
安装
您可以通过composer安装此包
composer require gaming-engine/dictionary
使用方法
$dict = new \GamingEngine\Dictionary\Dictionary(); $dict[new \stdClass()] = 12; $dict['php'] = 23; $dict[100] = 'dictionary';
类\GamingEngine\Dictionary\Dictionary
实现了Iterator
、ArrayAccess
、Countable
和Serializable
。它还提供了创建和排序字典以及将其转换为数组的方法。
字典的有效键类型有
- 对象
- 整数
- 浮点数
- 字符串
- 布尔值
- 空值
您不能使用
- 闭包
- 数组
创建
要创建空字典,请使用构造函数。
$dict = new \GamingEngine\Dictionary\Dictionary();
您还可以从键值对创建字典。
$dict = \GamingEngine\Dictionary\Dictionary::fromPairs([ ['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3'], ]);
最后一种方法是从小数组创建字典。
$dict = \GamingEngine\Dictionary\Dictionary::fromArray([ 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3', ]);
转换为PHP数组
有三个方法可以让您以数组的形式检索数据
Dictionary::keys()
- 返回键数组,Dictionary::values()
- 返回值数组,Dictionary::toPairs()
- 返回键值对数组;每个对是2元素数组。
复制字典
与数组不同,字典是一个对象,这意味着它是引用类型。如果您想要字典的副本,您必须使用clone关键字或调用Dictionary::getCopy()方法。
排序元素
就像数组一样,字典是有序的。要排序字典,请使用Dictionary::sortBy($callback, $direction)方法。任何参数都可以省略。
$callback
将为每个元素调用。字典将根据回调返回的值排序。回调的第一个参数是值,第二个参数是元素的键。除了可调用函数之外,您还可以使用"values"或"keys"字符串。$direction
可以是"asc"或"desc"。默认值是"asc"。
排序示例
$dictionary->sortBy('values','asc');
$dictionary->sortBy(function($value, $key) { return $value->title . $key->name; }, 'desc');
sortBy
会改变它被调用的字典。如果您想得到排序后的副本,请使用getCopy
进行链式调用。
$sortedDictionary = $dictionary->getCopy()->sortBy('values', 'asc');
测试
composer test
变更日志
有关最近更改的更多信息,请参阅变更日志。
贡献
有关详细信息,请参阅贡献指南。
安全
如果您发现任何安全相关的问题,请通过电子邮件awjudd@gmail.com联系,而不是使用问题跟踪器。
致谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。