pflorek / elevator
将多维数组或任何 \Traversable 转换为一维数组。将一维或任何 \Traversable 提升为多维数组。
2.0.1
2017-03-17 00:00 UTC
Requires
- php: >=5.4
- symfony/polyfill-php71: ^1
Requires (Dev)
- phpunit/phpunit: >=4.8.36 <8.0
README
此库提供了一种简单的方法,可以将映射(关联数组)提升为树或将树展开为映射(关联数组)。树的节点键是映射的实际路径令牌,由分隔符分隔。
此库非常适合将扁平列表(如SQL结果)映射到文档。结果列名可以是目标文档的实际路径。您可以将结果行传递给 Elevator::up
并通过将提升后的树传递给JSON或XML序列化器进行序列化。在反序列化时,只需将反序列化的数组树传递给 Elevator::down
并提供例如SQL语句。
用法
提升
将带有实际路径的映射提升为树
use PFlorek\Elevator\Elevator; use PFlorek\Elevator\ElevatorFactory; use function \PFlorek\Elevator\array_elevate; $flattened = [ 'World.Asia.Afghanistan.0' => '...', 'World.Africa' => true, 'World.Antarctica' => -25.2, 'World.Europe' => new \stdClass(), 'World.North America' => [], ]; // object oriented $factory = ElevatorFactory::getInstance(); $elevator = $factory->create(); $elevator->up($flattened); // or functional $elevated = array_elevate($flattened); var_dump($elevated); //returns ["World"] => array(5) { // ["Asia"] => array(1) { // ["Afghanistan"] => array(1) { // [0] => string(3) "..." // } // } // ["Africa"] => bool(true) // ["Antarctica"] => float(-25.2) // ["Europe"]=> object(stdClass)#298 (0) {} // ["North America"]=> [] //}
展开
将树展开为映射,其键是节点键的实际路径
use PFlorek\Elevator\Elevator; use PFlorek\Elevator\ElevatorFactory; use function \PFlorek\Elevator\array_flatten; $elevated = [ 'World' => [ 'Asia' => [ 'Afghanistan' => [ '...' ] ], 'Africa' => true, 'Antarctica' => -25.2, 'Europe' => new \stdClass(), 'North America' => [], ] ]; // object oriented $factory = ElevatorFactory::getInstance(); $elevator = $factory->create(); $elevator->down($flattened); // or functional $flattened = array_flatten($elevated); var_dump($flattened); //returns array(5) { // ["World.Asia.Afghanistan.0"] => string(3) "..." // ["World.Africa"] => bool(true) // ["World.Antarctica"] => float(-25.2) // ["World.Europe"] => object(stdClass) (0) { } // ["World.North America"] => array(0) { } //}
安装
使用 Composer 安装此包
composer require pflorek/elevator
作者
贡献
欢迎贡献!
许可证
此包的所有内容均受 MIT许可证 的许可。