定制 dingtao/simple-array-accessor 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

dingtao/simple-array-accessor

Composer 安装命令:

composer require dingtao/simple-array-accessor

包简介

a simple lib to get/set array value with dot notation

README 文档

README

a lib to set/get array value with dot notation

installation

composer require dingtao/simple-array-accessor

Usage

get value

use Accessor\ArrayAccessor;

$accessor = new ArrayAccessor(array(
    "foo" => array(
        "bar" => array(1, 2, 3, 'buzz' => 'phar'),
        "phar" => array(
            array("a" => "b"),
            array("a" => "c"),
            array("d" => "e")
        )
    ),
    "a.b.c" => "d"
));

var_dump($accessor->get('foo'));
// output:
// array(
//    "bar" => array(1, 2, 3, 'buzz'),
//    "phar" => array(
//         array("a" => "b"),
//         array("a" => "c"),
//         array("d" => "e")
//     )
// )

var_dump($accessor->get('foo.bar[]'));
// output: array(1, 2, 3, 'buzz')
// equivelant to "$accessor->get('foo.bar')"

var_dump($accessor->get('foo.bar'));
// output: array(1, 2, 3, 'buzz')

var_dump($accessor->get('foo.bar[1]'));
// output: 2

var_dump($accessor->get('foo.bar.buzz'));
// output: 'phar'

var_dump($accessor->get('a.b.c'));
// output: 'd'

var_dump($accessor->get('foo.phar[].a'));
// output: array("b", "c", null)

var_dump($accessor->get('foo.phar[].a', 'not found'));
// output: array("b", "c", 'not found')

set value

use Accessor\ArrayMutator;

// with no given array
$mutator = new ArrayMutator();
var_dump($mutator->set("foo", "bar")->getArrayCopy());
// output: 
// array(
//      "foo" => "bar"
// )

$fooValue = array(
    "bar" => array(1, 2, 3, 'buzz' => 'phar'),
    "phar" => array(
        array("a" => "b"),
        array("a" => "c"),
        array("d" => "e")
    )
);
var_dump($mutator->set("foo", $fooValue)->getArrayCopy());
// output:
// array(
//      "foo" => array(
//             "bar" => array(1, 2, 3, 'buzz' => 'phar'),
//             "phar" => array(
//                 array("a" => "b"),
//                 array("a" => "c"),
//                 array("d" => "e")
//             )
//      )
// )

var_dump($mutator->set("foo.bar.buzz", "updated")->getArrayCopy());
// output:
// array(
//      "foo" => array(
//             "bar" => array(1, 2, 3, 'buzz' => 'updated'),
//             "phar" => array(
//                 array("a" => "b"),
//                 array("a" => "c"),
//                 array("d" => "e")
//             )
//      )
// )

var_dump($mutator->set("foo.phar[].a", "updated")->getArrayCopy());
// output:
// array(
//      "foo" => array(
//             "bar" => array(1, 2, 3, 'buzz' => 'updated'),
//             "phar" => array(
//                 array("a" => "updated"),
//                 array("a" => "updated"),
//                 array("d" => "e")
//             )
//      )
// )

var_dump($mutator->set("foo.phar[0].a", "updated-updated")->getArrayCopy());
// output:
// array(
//      "foo" => array(
//             "bar" => array(1, 2, 3, 'buzz' => 'updated'),
//             "phar" => array(
//                 array("a" => "updated-updated"),
//                 array("a" => "updated"),
//                 array("d" => "e")
//             )
//      )
// )

var_dump($mutator->set("foo.phar[0]", "updated-updated-updated")->getArrayCopy());
// output:
// array(
//      "foo" => array(
//             "bar" => array(1, 2, 3, 'buzz' => 'updated'),
//             "phar" => array(
//                 "updated-updated-updated",
//                 array("a" => "updated"),
//                 array("d" => "e")
//             )
//      )
// )

var_dump($mutator->set("foo.phar", "updated-updated-updated")->getArrayCopy());
// equivelant to $mutator->set("foo.phar[]", "updated-updated-updated")
// output:
// array(
//      "foo" => array(
//             "bar" => array(1, 2, 3, 'buzz' => 'updated'),
//             "phar" => "updated-updated-updated"
//      )
// )


// with given array
$array = array(
    "foo" => array(
     "bar" => array(1, 2, 3, 'buzz' => 'phar'),
     "phar" => array(
         array("a" => "b"),
         array("a" => "c"),
         array("d" => "e")
     )
    ),
    "a.b.c" => "d"
);
$mutator = new ArrayMutator($array)

var_dump($mutator->set("a.b.c", "updated")->getArrayCopy());
// output:
// array(
//      "foo" => array(
//             "bar" => array(1, 2, 3, 'buzz' => 'phar'),
//             "phar" => array(
//                 array("a" => "b"),
//                 array("a" => "c"),
//                 array("d" => "e")
//             )
//            ),
//       "a.b.c" => "updated"
// )

Note: the key of element in array is better not to contain "." to avoid ambiguous meaning. However if "." is a compulsory character, please use it in root level but not child level, as below:

$arrayWithRegconisableKeys = array(
    "foo" => "bar",
    "buzz" => array(1, 2, 3)
    "a.b.c" => "d"
);

$arrayWithUnregconisableKeys = array(
    "foo" => array(
        "a.b.c" => "d"
    )
);

统计信息

  • 总下载量: 17
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 4
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Apache-2.0
  • 更新时间: 2018-07-22

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固