Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Arrayaccess and native php array functions

Is there any way to use array_merge(), array_pop(), .. functions to work with ArrayAccess?

Since now i've tried Iterate interface and __set_state() magic method with no success.

Error that is given: array_replace_recursive() [<a href='function.array-replace-recursive'>function.array-replace-recursive</a>]: Argument #1 is not an array.

Just fo a record, gettype() returns object and is_array() returns false and i'm usin php version 5.3.8

like image 312
Kristian Avatar asked Jan 09 '12 11:01

Kristian


1 Answers

Unfortunately, no. They only work with the native array type. You have to add those as methods to your object's public API and implement them there, e.g. something like this:

class YourClass implements ArrayAccess, Countable
{
    public function pop()
    {
        $lastOffset = $this->count() - 1;
        $lastElement = $this->offsetGet($lastOffset);
        $this->offsetUnset($lastOffset);

        return $lastElement;
    }

    public function mergeArray(array $array) {
        // implement the logic you want
    }

    // other code …
}
like image 141
Gordon Avatar answered Oct 02 '22 20:10

Gordon



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!