https://github.com/dottwatson/lonfo
traverse an array by accessing the childrens and parents of a node. You can obtain also the dingle children/value xpath
https://github.com/dottwatson/lonfo
array children parent traversable xpath
Last synced: about 1 month ago
JSON representation
traverse an array by accessing the childrens and parents of a node. You can obtain also the dingle children/value xpath
- Host: GitHub
- URL: https://github.com/dottwatson/lonfo
- Owner: dottwatson
- License: mit
- Created: 2020-08-05T13:56:39.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-10-24T14:46:29.000Z (over 1 year ago)
- Last Synced: 2025-12-14T21:18:23.302Z (6 months ago)
- Topics: array, children, parent, traversable, xpath
- Language: PHP
- Homepage:
- Size: 26.4 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Lonfo
traverse an array by accessing the children and parents of a node
## Install
In your project
```
composer require dottwatson/lonfo
```
## Usage
```php
$data = [
'bar' => [0,1,2,3,4,5],
'foo' => [10,20,30,40,50]
];
```
with dedicated function
```php
$array = lonfo($data); //returns a Lonfo\Walker Object
```
or with instance
```php
use Lonfo\Walker;
$array = new Walker($data); //returns a Lonfo\Walker Object
```
then traverse your array
```php
$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
```php
$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 |