dpolac / dictionary
使用对象和标量索引的集合
v1.0.0
2016-06-05 18:29 UTC
Requires
- php: ^5.4 || ^7.0
- ext-spl: *
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
实现 Iterator
、ArrayAccess
、Countable
和 Serializable
接口。它还提供了创建和排序字典以及将其转换为数组的方法。
字典有效的键类型有
- 对象
- 整数
- 浮点数
- 字符串
- 布尔值
- 空值
您 不能 使用
- 闭包
- 数组
创建
要创建空的字典,请使用构造函数。
<?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');