Skip to main content

AnyDataset-Array

Build Status Opensource ByJG GitHub source GitHub license GitHub release

Array abstraction dataset. Anydataset is an agnostic data source abstraction layer in PHP.

See more about Anydataset here.

Examples

Simple Manipulation

<?php
$array = ["A", "B", "C"];

$dataset = new \ByJG\AnyDataset\Lists\ArrayDataset($array);

$iterator = $dataset->getIterator();
foreach ($iterator as $row) {
echo $row->get('__id'); // Print 0, 1, 2
echo $row->get('__key'); // Print 0, 1, 2
echo $row->get('value'); // Print "A", "B", "C"
}

Associative Arrays

<?php
$array = ["A" => "ProdA", "B" => "ProdB", "C" => "ProdC"];

$dataset = new \ByJG\AnyDataset\Lists\ArrayDataset($array);

$iterator = $dataset->getIterator();
foreach ($iterator as $row) {
echo $row->get('__id'); // Print 0, 1, 2
echo $row->get('__key'); // Print "A", "B", "C"
echo $row->get('value'); // Print "ProdA", "ProdB", "ProdC"
}

Array of objects

<?php
class Name {
public $name;
public $surname;

public function __construct($name, $surname) {
$this->name = $name;
$this->surname = $surname;
}
}
$array = [
"A" => new Name("Joao", "Gilberto"),
"B" => new Name("John", "Doe"),
"C" => new Name("Mary", "Jane")
];

$dataset = new \ByJG\AnyDataset\Lists\ArrayDataset($array);

$iterator = $dataset->getIterator();
foreach ($iterator as $row) {
echo $row->get('__id'); // Print 0, 1, 2
echo $row->get('__key'); // Print A, B, C
echo $row->get('__class'); // Print \Name
echo $row->get('name'); // Print "Joao", "John", "Mary"
echo $row->get('surname'); // Print "Gilberto", "Doe", "Jane"
}

Filtering results

<?php
class Name {
public $name;
public $surname;

public function __construct($name, $surname) {
$this->name = $name;
$this->surname = $surname;
}
}
$array = [
"A" => new Name("Joao", "Gilberto"),
"B" => new Name("John", "Doe"),
"C" => new Name("Mary", "Jane")
];

$dataset = new \ByJG\AnyDataset\Lists\ArrayDataset($array);

$filter = new \ByJG\AnyDataset\Core\IteratorFilter();
$filter->addRelation("surname", \ByJG\AnyDataset\Core\Enum\Relation::EQUAL, "Doe");
$iterator = $dataset->getIterator($filter);
foreach ($iterator as $row) {
echo $row->get('__id'); // Print 1
echo $row->get('__key'); // Print B
echo $row->get('__class'); // Print \Name
echo $row->get('name'); // Print "John"
echo $row->get('surname'); // Print "Doe"
}

Install

Just type:

composer require "byjg/anydataset-array"

Running Unit tests

vendor/bin/phpunit

Dependencies


Open source ByJG