PHPackages                             dottwatson/simple-data - 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. dottwatson/simple-data

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

dottwatson/simple-data
======================

traverse an array or an object by accessing the children and parents of a node

1.0(1y ago)0151MITPHP

Since Oct 28Pushed 1y ago1 watchersCompare

[ Source](https://github.com/dottwatson/simple-data)[ Packagist](https://packagist.org/packages/dottwatson/simple-data)[ RSS](/packages/dottwatson-simple-data/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)DependenciesVersions (2)Used By (1)

SimpleData
==========

[](#simpledata)

traverse an array or an object by accessing the children and parents of a node

Install
-------

[](#install)

In your project

```
composer require dottwatson/simple-data

```

Usage
-----

[](#usage)

```
$data = [
    'bar' => [0,1,2,3,4,5],
    'foo' => [10,20,30,40,50]
];

$object = new StdClass;
$object->bar = 'foo';
```

with dedicated function

```
$array = simple_data($data); //returns a SimpleData\SimpleArray object

$object = simple_data($object); //returns a SimpleData\SimpleObject object
```

or with instance

```
use SimpleData\SimpleArray;

$array = new SimpleArray($data);
```

then traverse your array (or object)

```
$item = $array->get('bar');

$itemData = $array->get('bar')->value(); //returns  [0,1,2,3,4,5]

//retrieve a value and back to its parent

$item = $array->get('bar');
$parentNode = $item->parent();
```

accessing to values

```
$value = $array->get('foo')->get(2);
echo $value->value(); //returns 30

$parent = $value->parent()->value(); // returns  [10,20,30,40,50]

$result = $array
    ->nthChild(2)   //select child #2
    ->append(1000)  //add 1000
    ->parent()      //return top  of proviouse hthChild
    ->set('genders',['Male','Female','Unisex']) //add key=>value
    ->nthChild(1)   //select child #1
    ->set(6,60)     // add key=>value
    ->parent()      // return top of proviouse hthChild
    ->value();       //get value

// result = Array
// (
//     [bar] => Array
//         (
//             [0] => 0
//             [1] => 1
//             [2] => 2
//             [3] => 3
//             [4] => 4
//             [5] => 5
//             [6] => 60
//         )

//     [foo] => Array
//         (
//             [0] => 10
//             [1] => 20
//             [2] => 30
//             [3] => 40
//             [4] => 50
//             [5] => 1000
//         )

//     [genders] => Array
//         (
//             [0] => Male
//             [1] => Female
//             [2] => Unisex
//         )

// )

echo $array->get('bar')->get(2)->path(); // returns "bar/2"

echo $array->xfind('gender/0')->value(); //returns "Male"
```

Available methods on array
--------------------------

[](#available-methods-on-array)

Here a list on the available methods on `SimpleData\SimpleArray`

MethodDescriptionOptionsNotes`get`Get an item by its key*string* $key`nthChild`Retrieve a child from its numeric index or a closure. The childs counters starts from 1. If $keyNumber is a Closure, the other extra parameters will be sent to the closure*int | Closure* $keyNumber`items`Get indexed items in current array`count`Returns the array items count`keys`Returns the array keys`value`Return the current array data with all modifications`parent`Returns the parent node in the array if any`has`Check if key exists in array*string* $key`key`Returns the current item key`first`Returns the first item in the array if exists`last`Returns the last item in the array if exists`shift`Remove the first item in the array if exists and returns it`pop`Remove the last item in the array if exists and returns it`set`Set a pair key =&gt; value item in teh array. If exists, will be overwritten*string* $key, *string* $valueused to add/overwrite items`append`Append alle items, passed as arguments, to the array\[$arg1,\[$arg2\]...\]`prepend`Prepends all items, passed as arguments, to the array\[$arg1,\[$arg2\]...\]`path`Returns the relative path , included current key\[*string* $separator = '/'\]`find`Returns an item or null, based on its xpath relative to current element where search starts*string* $path,\[*string* $separator = '/'\]`iterable`Tells if is a valid array (a traversable SimpleData)This is useful for determinate if an end value or array or object to traverseAvailable methods on SimpleValue
--------------------------------

[](#available-methods-on-simplevalue)

Here a list on the available methods on `Lonfo\SimpleValue`

MethodDescriptionOptionsNotes`key`Returns the current item key`value`Returns value`parent`Returns the parent array`type`Returns the value type`path`Returns the full data path , included current key\[*string* $separator = '/'\]`iterable`Tells if is a valid array (a traversable SimpleData)This is useful for determinate if an end value or array to traverse

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance37

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity38

Early-stage or recently created project

 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

Unknown

Total

1

Last Release

566d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/a2dfdd3fbe96c3d4d5e8dd6eff79adc4f21876f80cd8345c4425c8b652d42428?d=identicon)[dottwatson](/maintainers/dottwatson)

---

Top Contributors

[![dottwatson](https://avatars.githubusercontent.com/u/7880339?v=4)](https://github.com/dottwatson "dottwatson (2 commits)")

---

Tags

arrayobjectiteratorparentchilds

### Embed Badge

![Health badge](/badges/dottwatson-simple-data/health.svg)

```
[![Health](https://phpackages.com/badges/dottwatson-simple-data/health.svg)](https://phpackages.com/packages/dottwatson-simple-data)
```

###  Alternatives

[symfony/property-access

Provides functions to read and write from/to an object or array using a simple string notation

2.8k295.3M2.5k](/packages/symfony-property-access)[cuyz/valinor

Dependency free PHP library that helps to map any input into a strongly-typed structure.

1.5k9.2M108](/packages/cuyz-valinor)[athari/yalinqo

YaLinqo, a LINQ-to-objects library for PHP

4561.2M5](/packages/athari-yalinqo)[ginq/ginq

LINQ to Object inspired DSL for PHP

192257.5k3](/packages/ginq-ginq)[jasny/dotkey

Dot notation access for objects and arrays

14219.5k6](/packages/jasny-dotkey)[michaldudek/foundation

A set of useful PHP classes.

13111.9k13](/packages/michaldudek-foundation)

PHPackages © 2026

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