dottwatson/simple-data

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

1.0 2024-10-28 12:56 UTC

This package is auto-updated.

Last update: 2024-11-28 13:05:32 UTC


README

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

Install

In your project

composer require dottwatson/simple-data

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

Here a list on the available methods on SimpleData\SimpleArray

Available methods on SimpleValue

Here a list on the available methods on Lonfo\SimpleValue