周长 / 数组变换器
数组变换器
dev-develop
2015-04-01 22:06 UTC
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-14 18:14:54 UTC
README
一个简单的类,可以以多种方式转换PHP数组
安装
像其他人一样使用 composer
$ composer require perimeter/array-transformer:dev-develop
用法
使用您的数据创建一个数组变换器
$data = [ 'one' => 'foo', 'two' => [ 'bar', 'baz' ] ]; $transformer = new Perimeter\ArrayTransformer\ArrayTransformer($data);
现在,您可以尽情享受乐趣!
重命名
// $data = [ 'A' => 'foo' ] $transformer->rename('A', 'RENAMED'); // [ 'RENAMED' => 'foo' ] // $data = [ 'A' => [ 'bar', 'baz' ] ] $transformer->rename('A/0', 'RENAMED'); // [ 'A' => [ 1 => 'baz' ], 'RENAMED' => 'bar' ] // $data = [ 'A' => [[ 'B' => 1 ], [ 'B' => 2 ]] ] $transformer->rename('A/?/B', 'A/?/C'); // [ 'A' => [[ 'C' => 1 ], [ 'C' => '2' ]] ]
删除
// $data = [ 'A' => 'foo', 'B' => 'bar' ] $transformer->remove('A'); // [ 'B' => 'bar' ] // $data = [ 'A' => [ 'bar', 'baz' ] ] $transformer->remove('A/?:equals("bar")'); // [ 'A' => [ 'baz' ] ] // $data = [ 'A' => [ 'B' => 1 ], 'C' => '2' ] $transformer->remove('A:has(B=2)'); // [ 'C' => '2' ]
替换
// $data = [ 'A' => 1 ] $transformer->replace('A', [1=>2]); // [ 'A' => 2 ] // $data = [ 'A' => 'abca' ] $transformer->replace('A', ['a'=>'xxx']); // [ 'A' => [ 'xxxbcxxx' ] ]
翻译
// $data = [ [ 'A' => 1 ], [ 'A' => 2 ], [ 'A' => 3 ] ] $transformer->translate('A/?', [ 1 => 'one', 2 => 'two', 3 = >'three' ]); // [ [ 'A' => 'one' ], [ 'A' => 'two' ], [ 'A' => 'three' ] ]
重新排序
// $data = [ 'A' => true, 'B' => false ] $transformer->reorder('A', 'after', 'B'); // [ 'B' => false, 'A' => true ] // $data = [ 'A' => true, 'B' => false ] $transformer->reorder('B', 'before', 'A'); // [ 'B' => false, 'A' => true ] // $data = [ 'A' => true, 'B' => false, 'C' => true ] $transformer->reorder('C', 'first'); // [ 'C' => true, 'A' => true, 'B' => false ] // $data = [ 'A' => true, 'B' => false, 'C' => true ] $transformer->reorder('A', 'last'); // [ 'B' => false, 'C' => true, 'A' => true ]
修改
// $data = [ 'A' => 'tEst', 'B' => 'UPPERCASE' ] $transformer->modify('B', 'strtolower'); // [ 'A' => 'tEst', 'B' => 'uppercase' ] // $data = [ 'A' => 'boat', 'B' => [ 'car', 'track' ] ] $transformer->modify('B', function ($var) { return 'race'.$var; }); // [ 'A' => 'boat', 'B' => [ 'racecar', 'racetrack' ] ]
语法
该类使用“路径”的概念来索引多维数组。通配符 ?
用于遍历整个子数组。
示例
A --> $array['A']
A/B --> $array['A']['B']
A/?/B --> foreach($array['A'] as $k => $v) $array['A'][$k]['B']