dpolac/dictionary

使用对象和标量索引的集合

v1.0.0 2016-06-05 18:29 UTC

This package is auto-updated.

Last update: 2024-08-29 04:42:51 UTC


README

使用对象和标量索引的集合

示例

<?php
    $dict = new \DPolac\Dictionary();

    $dict[new \stdClass()] = 12;
    $dict['php'] = 23;
    $dict[100] = 'dictionary';

安装

通过 Composer 安装

composer require dpolac/dictionary

用法

\DPolac\Dictionary 实现 IteratorArrayAccessCountableSerializable 接口。它还提供了创建和排序字典以及将其转换为数组的方法。

字典有效的键类型有

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

不能 使用

  • 闭包
  • 数组

创建

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

<?php
    $dict = new \DPolac\Dictionary();

您还可以从键值对创建字典。

<?php
    $dict = \DPolac\Dictionary::fromPairs([
        ['key1', 'value1'],
        ['key2', 'value2'],
        ['key3', 'value3'],
    ]);

最后一个选项是从数组创建字典。

<?php
    $dict = \DPolac\Dictionary::fromArray([
        'key1' => 'value1',
        'key2' => 'value2',
        'key3' => 'value3',
    ]);

转换为 PHP 数组

有三个方法可以让您以数组的形式检索数据

  • Dictionary::keys() - 返回键数组,
  • Dictionary::values() - 返回值数组,
  • Dictionary::toPairs() - 返回键值对数组;每个对是一个包含两个元素的数组。

复制字典

与数组不同,字典是一个对象,这意味着它是一个引用类型。如果您想要字典的副本,您必须使用 clone 关键字或调用 Dictionary::getCopy() 方法。

排序元素

就像数组一样,字典是有序的。要排序字典,请使用 Dictionary::sortBy($callback, $direction) 方法。任何参数都可以省略。

  • $callback 将对每个元素进行调用。字典将按回调返回的值排序。回调的第一个参数是值,第二个是元素的键。您可以使用字符串 "values" 或 "keys" 替代可调用。
  • $direction 可以是 "asc""desc"。默认值是 "asc"

排序示例

<?php
    $dictionary->sortBy('values','asc');
<?php
    $dictionary->sortBy(function($value, $key) {
        return $value->title . $key->name;
    }, 'desc');

sortBy 会改变被调用的字典。如果您想要排序的副本,请使用 getCopy 链接。

<?php
    $sortedDictionary = $dictionary->getCopy()->sortBy('values', 'asc');