2012-01-09 10 views
11

array_merge()array_pop()、.. ArrayAccessを使用するための関数はありますか?ArrayaccessおよびネイティブPHP配列関数

今私はIterateインターフェイスと__set_state()魔法の方法を試してみました。

エラーはarray_replace_recursive() [<a href='function.array-replace-recursive'>function.array-replace-recursive</a>]: Argument #1 is not an arrayです。念のFO

gettype()戻りobjectis_array()戻りfalseと私は、いや、残念ながら、PHPのバージョン5.3.8

答えて

8

をusinよ。それらは、ネイティブの配列型でのみ動作します。オブジェクトのパブリック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 … 
} 
+0

そう思うが、ちょうど尋ねられた。 Ty – Kristian

+0

私はこの答えを理解していません - あなたは私の 'ArrayAccess'実装クラスのメソッドとして' array_merge'と他のネイティブ配列関数を実装する必要があると言っていますか? – alexw

+0

@alexwはい。これらの関数は配列の入力を期待しているためです。 ArrayAccessを実装するクラスは、配列と同じ型ではありません。 – Gordon

関連する問題