tebru/multi-array

为PHP提供一种数据结构,以简化对多维数组的访问

v0.2.1 2015-07-16 22:08 UTC

This package is auto-updated.

Last update: 2024-09-24 10:48:45 UTC


README

Build Status Coverage Status Scrutinizer Code Quality

MultiArray

该项目旨在提供更简单的对多维数组的访问。在创建过程中考虑了JSON响应。目标是使其更容易检查是否存在多层级的键,并检索值。

安装

composer require tebru/multi-array:~0.1

使用方法

通过实例化或使用工厂方法创建对象。传入一个JSON对象或数组。如果无法解析JSON或变量不是数组,将抛出InvalidArgumentException异常。

$array = [
    'key' => 'value',
    'key2' => ['nested-key' => 'value2'],
];
$multiArray = new MultiArray($array);
$multiArray = $multiArrayFactory->make($array);

$json = json_encode($array);
$multiArray = new MultiArray($json);
$multiArray = $multiArrayFactory->make($json);

从这里您可以检查键是否存在

$multiArray->exists('key2.nested-key'); // returns true
$multiArray->exists('key3'); // returns false

获取键的值

$multiArray->get('key2'); // returns ['nested-key' => 'value2']
$multiArray->get('key2.nested-key'); // returns 'value2'
$multiArray->get('key3'); // throws OutOfBoundsException

设置键的值

$multiArray->set('key1', 'value');
$multiArray->set('key2.nested-key', 'value');
$multiArray->set('key2.newKey', 'value');
$multiArray->set('key1.newKey', 'value'); // throws InvalidArgumentException

删除键的值

$multiArray->remove('key1');
$multiArray->remove('key2.unknown'); // throws OutOfBoundsException

我们默认使用点 . 来分隔键,但可以在实例化时更改

$multiArray = new MultiArray($array, ':');
$multiArray = $multiArrayFactory->make($array, '--');

您也可以像访问普通数组一样访问对象

isset($multiArray['key2.nested-key']);
$multiArray['key2.nested-key'];
$multiArray['key2.nested-key'] = 'value';
unset($multiArray['key2.nested-key']);