noi/array-walker

ArrayWalker,为 array_walk() 和 array_map() 提供面向对象包装

dev-master 2013-09-19 10:13 UTC

This package is not auto-updated.

Last update: 2024-09-23 15:56:23 UTC


README

对内置的 array_walk() 和 array_map() 提供面向对象的包装。

安装

使用 Composer,只需 $ composer require noi/array-walker 包或

{
    "require": {
        "noi/array-walker": "dev-master"
    }
}

用法

示例 1

<?php
$names = array('*APPLE*', '*ORANGE*', '*LEMON*');

$walker = new \Noi\Util\ArrayWalker($names);
$result = $walker->trim('*')->strtolower()->ucfirst();

assert($result->getArrayCopy() === array('Apple', 'Orange', 'Lemon'));
assert((array) $result === array('Apple', 'Orange', 'Lemon'));

以下代码返回的结果与上面相同

// ...
$result = $walker->map(function ($name) {
    return ucfirst(strtolower(trim($name, '*')));
});

示例 2

<?php
$dom = new \DOMDocument();
$dom->loadXML('<users><user>Alice</user><user>Bob</user></users>');
$users = $dom->getElementsByTagName('user');

$walker = new \Noi\Util\ArrayWalker($users);
$walker->setAttribute('type', 'engineer');

assert(trim($dom->saveHtml()) ==
    '<users><user type="engineer">Alice</user><user type="engineer">Bob</user></users>');

以下代码返回的结果与上面相同

// ...
$walker->walk(function ($node) {
    $node->setAttribute('type', 'engineer');
});

许可协议

ArrayWalker 使用 MIT 许可协议 - 详细信息请参阅 LICENSE 文件。