crazycodr/previous-current-iterator

Simple package that offers an iterator used for previous vs current comparison

1.1.2 2019-07-11 16:42 UTC

This package is auto-updated.

Last update: 2023-01-12 00:02:12 UTC


README

Build StatusLatest Stable Version Total Downloads Latest Unstable Version License

Previous/Current iterator

Allows iteration over an array but returns two items at a time stepping by one item at a time. Thus, the iterator for

['a', 'b', 'c', 'd']

Will return

['previous' => 'a', 'current' => 'b']
['previous' => 'b', 'current' => 'c']
['previous' => 'c', 'current' => 'd']

Current/Next iterator

Allows iteration over an array but returns two items at a time stepping by one item at a time. Thus, the iterator for

['a', 'b', 'c', 'd']

Will return

['current' => 'a', 'next' => 'b']
['current' => 'b', 'next' => 'c']
['current' => 'c', 'next' => 'd']
['current' => 'd', 'next' => null]

Installation

To install it, just include this requirement into your composer.json

{
    "require": {
        "crazycodr/previous-current-iterator": "1.*"
    }
}

And then run composer install/update as necessary.

Supports

Only PHP 5.5 or more can be supported due to the fact that key() can only return arrays starting with PHP 5.5!

Examples

To use the PreviousCurrentIterator, just instanciate a copy with an array and foreach it!

$data = ['a', 'b', 'c', 'd'];
foreach(new PreviousCurrentIterator($data) as $keys => $values) {
    //Compare previous and current
    if ($values['previous'] !== $values['current']) {
        echo 'Not the same<br />';
    }
}

To use the CurrentNextIterator, just instanciate a copy with an array and foreach it!

$data = ['a', 'b', 'c', 'd'];
foreach(new CurrentNextIterator($data) as $keys => $values) {
    //Compare previous and current
    if ($values['next'] !== null) {
        if ($values['current'] !== $values['next']) {
            echo 'Not the same<br />';
        }
    }
}

Use cases

Practical if you need to compare two items together in a previous vs current or current vs next manner.