PHPackages                             dingtao/simple-array-accessor - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. dingtao/simple-array-accessor

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

dingtao/simple-array-accessor
=============================

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

0.2(7y ago)017Apache-2.0PHPPHP ^5.3 || ^7.0

Since Jul 23Pushed 7y ago1 watchersCompare

[ Source](https://github.com/JerryDing2014/SimpleArrayAccessor)[ Packagist](https://packagist.org/packages/dingtao/simple-array-accessor)[ RSS](/packages/dingtao-simple-array-accessor/feed)WikiDiscussions master Synced today

READMEChangelog (2)Dependencies (1)Versions (4)Used By (0)

SimpleArrayAccessor
===================

[](#simplearrayaccessor)

a lib to set/get array value with dot notation

installation
============

[](#installation)

```
composer require dingtao/simple-array-accessor

```

Usage
=====

[](#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"
    )
);
```

###  Health Score

23

—

LowBetter than 26% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~77 days

Total

2

Last Release

2821d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2eb2c00603bfc8e10afa0aeb76e615cff141ee5aceb7525ba2f16e5fcdd81324?d=identicon)[jerryd221](/maintainers/jerryd221)

---

Top Contributors

[![JerryDing2014](https://avatars.githubusercontent.com/u/10173162?v=4)](https://github.com/JerryDing2014 "JerryDing2014 (7 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/dingtao-simple-array-accessor/health.svg)

```
[![Health](https://phpackages.com/badges/dingtao-simple-array-accessor/health.svg)](https://phpackages.com/packages/dingtao-simple-array-accessor)
```

###  Alternatives

[pragmarx/support

PragmaRX components support package

591.5M27](/packages/pragmarx-support)[ruafozy/mersenne-twister

Pure-PHP Mersenne Twister

221.4M13](/packages/ruafozy-mersenne-twister)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
