16

array_merge(), array_pop(), .. 関数を使用して ArrayAccess を操作する方法はありますか?

今以来、私はIterateインターフェースと__set_state()魔法の方法を試しましたが、成功しませんでした。

表示されるエラー: array_replace_recursive() [<a href='function.array-replace-recursive'>function.array-replace-recursive</a>]: Argument #1 is not an array

レコード、gettype()リターンobjectis_array()リターンだけfalseで、私はphpバージョン5.3.8を使用しています

4

1 に答える 1

14

残念だけど違う。これらは、ネイティブ配列タイプでのみ機能します。これらをオブジェクトのパブリック API にメソッドとして追加し、そこに実装する必要があります。たとえば、次のようになります。

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 …
}
于 2012-01-09T11:56:41.923 に答える