ArrayAccess::offsetGet

(PHP 5, PHP 7)

ArrayAccess::offsetGetオフセットを取得する

説明

abstract public ArrayAccess::offsetGet ( mixed $offset ) : mixed

指定したオフセットの値を返します。

このメソッドは、オフセットが empty() かどうかを調べる際に実行されます。

パラメータ

offset

取得したいオフセット。

注意

注意:

PHP 5.3.4 以降ではプロトタイプのチェックが緩和され、 このメソッドの実装で参照を返せるようになりました。 これにより、ArrayAccess オブジェクトのオーバーロードされた配列に対する間接的な変更ができるようになりました。

直接的な変更とは、$obj[6] = 7 のように配列のその次元の値を完全に置き換える変更のことです。 一方、間接的な変更とは、$obj[6][7] = 7 のようにその次元の一部分のみを変更したり $var =& $obj[6] のように他の変数に参照を代入したりする変更のことです。 ++ によるインクリメントや -- によるデクリメントもまた、ある意味では間接的な変更を要するものです。

直接的な変更の際には ArrayAccess::offsetSet() がコールされますが、間接的な変更の際には ArrayAccess::offsetGet() がコールされます。この場合は ArrayAccess::offsetGet() の実装が参照を返せるようにしておく必要があります。 そうしなければ E_NOTICE メッセージが発生します。

返り値

すべての型の値を返すことができます。

参考

add a note add a note

User Contributed Notes 1 note

up
0
Martin Q
9 months ago
As of PHP 7, offsetExists($offset) must return a TRUE value in order for offsetGet($offset) to be called, otherwise offsetGet($offset) will just return NULL.  This was not the case in PHP 5, so if your code suddenly stops working upon upgrade to PHP 7, make sure offsetExists() returns sensible values.
To Top