dottwatson/lonfo

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

v1.0.2 2020-08-25 08:33 UTC

This package is auto-updated.

Last update: 2024-05-15 01:18:58 UTC


README

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

Install

In your project

composer require dottwatson/lonfo

Usage

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

with dedicated function

$array = lonfo($data); //returns a Lonfo\Walker Object

or with instance

use Lonfo\Walker;

$array = new Walker($data); //returns a Lonfo\Walker Object

then traverse your array

$item = $array->get('bar'); //returns a Lonfo\Walker Object

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

//retrieve a value and back to its parent

$item = $array->get('bar'); //returns a Lonfo\Walker Object
$parentNode = $item->parent(); //returns a Lonfo\Walker Object of the parent array

//cycle items in array
while($item = $array->next()){
   print_r($item->value());
}

//rewind pointer
$array->rewind();

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)->xpath(); // returns "bar/2"

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

Available methods on array

Here a list on the available methods on Lonfo\Walker

Method Description Options Notes
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
prev Move internal pointer to the previouse item and returns it if exists
next Move internal pointer to the previouse item and returns it if exists
key Returns the current item key
rewind Reset array internal pointer
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 => value item in teh array. If exists, will be overwritten string $key, string $value used 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]...]
xpath Returns the relative path , included current key [string $separator = '/']
xfind 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 Walker) This is useful for determinate if an end value or array to traverse

Available methods on Value

Here a list on the available methods on Lonfo\Value

Method Description Options Notes
key Returns the current item key
value Returns value
parent Returns the parent array
type Returns the value type
xpath Returns the full data path , included current key [string $separator = '/']
iterable Tells if is a valid array (a traversable Walker) This is useful for determinate if an end value or array to traverse