1. Go to this page and download the library: Download binary-cube/dot-array 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/ */
new DotArray($array);
DotArray::create($array);
DotArray::createFromJson($jsonString);
// Because the key `sci-fi & fantasy` is array the returning value it will be a new instance of DotArray.
$dot('books.{sci-fi & fantasy}');
// Because the price is not an array, the result will be raw data, float in this case.
$dot('books.{sci-fi & fantasy}.0.price');
// Accessing the raw array.
$dot('books.{sci-fi & fantasy}')->toArray();
$dot->get('books.{sci-fi & fantasy}')->toArray();
// Accessing the last leaf and getting the raw data.
$dot('books.{sci-fi & fantasy}.0.name');
$dot->get('books.{sci-fi & fantasy}.0.name');
// Giving a default value in case the requested key is not found.
$dot->get('key.not.exist', 'not-found-as-string');
// Vanilla PHP.
$dot('books.{sci-fi & fantasy}.0.name');
$dot['books']['sci-fi & fantasy'][0]['name'];
// Using dotted key and accessing without getting confused.
// Allowed tokens for keeping the names with dot(.) togethers are: '', "", [], (), {}
$dot->get('config.{elastic-search}.\'v5.0\'.host')
$dot->get('config.{elastic-search}."v5.0".host')
$dot->get('config.{elastic-search}.[v5.0].host')
$dot->get('config.{elastic-search}.(v5.0).host')
$dot->get('config.{elastic-search}.{v5.0}.host')
$books = $dot->get('books.{children\'s books}')->filter(function ($value, $key) {
return $value['name'] === 'Harry Potter and the Order of the Phoenix';
});
$books->toArray();
/*
Allowed comparison operators:
- [ =, ==, eq (equal) ]
- [ ===, i (identical) ]
- [ !=, ne (not equal) ]
- [ !==, ni (not identical) ]
- [ <, lt (less than) ]
- [ >, gr (greater than) ]
- [ <=, lte (less than or equal to) ]
- [ =>, gte (greater than or equal to) ]
- [ in, contains ]
- [ not-in, not-contains ]
- [ between ]
- [ not-between ]
*/
// Example 1.
$books = $dot->get('books.{children\'s books}')->filterBy('price', 'between', 5, 12);
// Example 2.
$books = $dot->get('books.{children\'s books}')->filterBy('price', '>', 10);
// Example 3.
$books = $dot->get('books.{children\'s books}')->filterBy('price', 'in', [8.5, 15.49]);
/*
The signature of the `where` call can be:
- where([property, comparisonOperator, ...value])
- where(\Closure) :: The signature of the callable must be: `function ($value, $key)`
Allowed comparison operators:
- [ =, ==, eq (equal) ]
- [ ===, i (identical) ]
- [ !=, ne (not equal) ]
- [ !==, ni (not identical) ]
- [ <, lt (less than) ]
- [ >, gr (greater than) ]
- [ <=, lte (less than or equal to) ]
- [ =>, gte (greater than or equal to) ]
- [ in, contains ]
- [ not-in, not-contains ]
- [ between ]
- [ not-between ]
*/
// Example 1. (using the signature: [property, comparisonOperator, ...value])
$books = $dot->get('books.{children\'s books}')->where(['price', 'between', 5, 12]);
// Example 2. (using the signature: [property, comparisonOperator, ...value])
$books = $dot->get('books.{children\'s books}')->where(['price', '>', 10]);
// Example 3. (using the signature: [property, comparisonOperator, ...value])
$books = $dot->get('books.{children\'s books}')->where(['price', 'in', [8.5, 15.49]]);
// Example 4. (using the signature: \Closure)
$books = $dot->get('books.{children\'s books}')->where(function ($value, $key) {
return $value['name'] === 'Harry Potter and the Order of the Phoenix';
});
// Example 1.
$dot->toArray();
// Example 2.
$dot->get('books.{sci-fi & fantasy}')->toArray();
// Example 1.
$dot->toJson();
// Example 2.
$dot->get('books.{sci-fi & fantasy}')->toJson();