I have the following class:
<?php
/*
* Abstract class that, when subclassed, allows an instance to be used as an array.
* Interfaces `Countable` and `Iterator` are necessary for functionality such as `foreach`
*/
abstract class AArray implements ArrayAccess, Iterator, Countable
{
    private $container = array();
    public function offsetSet($offset, $value) 
    {
        if (is_null($offset)) {
            $this->container[] = $value;
        } else {
            $this->container[$offset] = $value;
        }
    }
    public function offsetExists($offset) 
    {
        return isset($this->container[$offset]);
    }
    public function offsetUnset($offset) 
    {
        unset($this->container[$offset]);
    }
    public function offsetGet($offset) 
    {
        return isset($this->container[$offset]) ? $this->container[$offset] : null;
    }
    public function rewind() {
            reset($this->container);
    }
    public function current() {
            return current($this->container);
    }
    public function key() {
            return key($this->container);
    }
    public function next() {
            return next($this->container);
    }
    public function valid() {
            return $this->current() !== false;
    }   
    public function count() {
     return count($this->container);
    }
}
?>
Then, I have another class that sub-classes AArray:
<?php
require_once 'AArray.inc';
class GalleryCollection extends AArray { }
?>
When I fill a GalleryCollection instance with data and then try to use it in array_filter(), in the first argument, I get the following error:
Warning: array_filter() [function.array-filter]: The first argument should be an array in
                Because array_filter only works with arrays.
Look at other options, like FilterIterator, or create an array from your object first.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With