1.0.1 2021-10-07 21:26 UTC

This package is auto-updated.

Last update: 2024-09-08 03:51:31 UTC


README

Latest Version on Packagist Total Downloads GitHub Actions

为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实现了IteratorArrayAccessCountableSerializable。它还提供了创建和排序字典以及将其转换为数组的方法。

字典的有效键类型有

  • 对象
  • 整数
  • 浮点数
  • 字符串
  • 布尔值
  • 空值

您不能使用

  • 闭包
  • 数组

创建

要创建空字典,请使用构造函数。

$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)。有关更多信息,请参阅许可文件