PHP code example of noj / dot
1. Go to this page and download the library: Download noj/dot library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
noj / dot example snippets
$dot = new Dot($data);
$dot = Dot::from($data); // alternative
$data = [
'groups' => [
(object)[
'name' => 'group1',
'items' => [
[
'name' => 'item1',
'rare' => false,
],
[
'name' => 'item3',
'rare' => true,
],
]
],
(object)[
'name' => 'group2',
'items' => []
],
(object)[
'name' => 'group3',
'items' => [
[
'name' => 'item2',
'rare' => true,
],
]
],
]
];
$dot->count('groups.0.items'); // 2
$dot->count('groups.*.items'); // 3
// find where property === value
$dot->find('groups.*.items.*.rare', true)->get();
/*
[
['name' => 'item3', 'rare' => true],
['name' => 'item2', 'rare' => true],
]
*/
// pass a callback for custom comparisons
$dot->find('groups.*.items.*.name', function (string $name) {
return $name === 'item2' || $name === 'item3';
})->get(); // returns same as above
// leave off the property to receive the whole item
$dot->find('groups.*.items.*', function (array $item) {
return $item['name'] === 'item3' && $item['rare'];
})->get();
$dot->first('groups.*.items.*.rare', true)->get(); // ['name' => 'item3', 'rare' => true]
$dot->first('groups.*.items.*', function (array $item) {
return $item['rare'] === true;
})->get(); // same as above
$dot->get('groups.0.items.1.name'); // 'item3'
$dot->get('groups.3.items.1.name'); // null
$dot->get('groups.*.items.*.name'); // ['item1', 'item3', 'item2']
$dot->get('groups.*.items'); /* [
['name' => 'item1', 'rare' => false],
['name' => 'item3', 'rare' => true],
['name' => 'item2', 'rare' => true],
] */
$data = [
'foo' => new class {
public function getBar() {
return ['bar' => 'value'];
}
}
];
(new Dot($data))->get('[email protected] '); // 'value'
$dot->get() === $data; // true
$dot->has('groups.0.items.1.name'); // true
$dot->push('groups.0.items', ['name' => 'another item']);
// supports wildcards
$dot->push('groups.*.items', ['name' => 'another item']);
$dot->set('groups.2.items.0.name', 'a different name');
echo $data['groups'][2]->items[0]['name']; // 'a different name'
$dot->set('groups.*.items.*.name', 'set all to same name');
$dot->set('groups.0.items.2.name', 'a new item');
$dot->set('groups.3->items.2.name', 'a new item');
$dot->set([
'groups.0.items.1.name' => 'something',
'groups.2.items.0.name' => 'something else',
]):
$data = [
'foo' => new class {
public $bars = [];
public function addBar($bar) {
$this->bar[] = $bar;
}
}
];
$dot = new Dot($data);
$dot->set('foo.@addBar', 'value');
echo $data['foo']->bars; // ['value']
$dot->set('foo.@addBar*', ['value1', 'value2']);
echo $data['foo']->bars; // ['value1', 'value2']
// instead of
$filtered = \Noj\Dot\Dot::from($data)
->find('groups.*.items.*.rare', true)
->get();
// you can do
$filtered = \Noj\Dot\find($data, 'groups.*.items.*.rare', true');