Skip to content

Instantly share code, notes, and snippets.

@hjr3
Created December 15, 2011 21:59
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hjr3/1483101 to your computer and use it in GitHub Desktop.
Save hjr3/1483101 to your computer and use it in GitHub Desktop.
SPL FilterIterator example
$items = array(
array(
'name' => 'Pants',
'available' => 1,
'sold' => 1,
),
array(
'name' => 'Shoes',
'available' => 1,
'sold' => 0,
),
);
$available = __::select($items, function($item) {
if (($item['available'] - $item['sold']) > 0) {
return true;
}
return false;
});
$available = function($item) {
if (($item['available'] - $item['sold']) > 0) {
echo $item['name'], PHP_EOL;
}
};
__::select($items, $available);
$available = array();
foreach ($items as $item) {
if (($item['available'] - $item['sold']) > 0) {
$available[] = $item;
}
}
class SellableItems extends FilterIterator
{
public function accept()
{
$current = $this->current();
if (($current['available'] - $current['soldout']) > 0) {
return true;
}
return false;
}
}
$available = new SellableItems(new ArrayIterator($items));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment