laurynasgadl/travers

Travers - 使用标记路径字符串轻松遍历 PHP 数组

v2.0.0 2023-07-18 06:30 UTC

This package is auto-updated.

Last update: 2024-09-18 09:04:12 UTC


README

Travers 是一个小型的 PHP 包,旨在通过标记路径字符串轻松遍历数组。

$params = [
    'fruits' => [
        'apple' => 1,
        'avocado' => 1.1,
        'banana' => [
            'baby' => 'baby',
            'ice_cream' => true,
            'casual' => false,
        ],
    ],
];

Travers::get('fruits.apple', $params); // 1
Travers::get('fruits.banana.ice_cream', $params); // true
Travers::get('fruits.banana.casual', $params); // false
Travers::get('fruits.apple.red', $params); // null

安装

composer require laurynasgadl/travers

文档

初始化

该库可以通过创建类的实例或使用它静态地来使用。

use Luur\Travers;

$data = [
    'path' => 1,
];

$travers = new Travers($data);

$val = $travers->find('path'); // 1
$val = Travers::get('path', $data); // 1

配置

创建 Travers 的实例允许设置额外的设置

$shouldThrowException = true;
$customDelimiter = '=';

$travers = new Travers($data, $shouldThrowException); // If a path is not found, will throw exception instead of returning null
$travers = new Travers($data, false, $customDelimiter); // Will separate path branches by the provided delimiter

设置数据

Travers 还允许在数组中设置数据

$data = [
    'path' => 1,
];

$travers = new Travers($data);

$data = $travers->change('path', 2); // ['path' => 2]
$data = Travers::set('path', 3, $data); // ['path' => 3]

如果路径在数组中不存在,则将其创建

$data = Travers::set('path.new.trail', 4, $data);

/**
 * $data = [
 *      'path' => [
 *          'new' => [
 *              'trail' => 4,
 *          ],
 *      ],
 * ];
 */