array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'arrayaccess.offsetget.php', 1 => 'ArrayAccess::offsetGet', ), 'up' => array ( 0 => 'class.arrayaccess.php', 1 => 'ArrayAccess', ), 'prev' => array ( 0 => 'arrayaccess.offsetexists.php', 1 => 'ArrayAccess::offsetExists', ), 'next' => array ( 0 => 'arrayaccess.offsetset.php', 1 => 'ArrayAccess::offsetSet', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'language/predefined/arrayaccess/offsetget.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 5, PHP 7, PHP 8)
ArrayAccess::offsetGet — オフセットを取得する
offset
取得したいオフセット。
すべての型の値を返すことができます。
注意:
このメソッドの実装で参照を返すことができます。 これにより、ArrayAccess オブジェクトのオーバーロードされた配列に対する間接的な変更ができます。
直接的な変更とは、
$obj[6] = 7
のように配列のその次元の値を完全に置き換える変更のことです。 一方、間接的な変更とは、$obj[6][7] = 7
のようにその次元の一部分のみを変更したり$var =& $obj[6]
のように他の変数に参照を代入したりする変更のことです。++
によるインクリメントや--
によるデクリメントもまた、ある意味では間接的な変更を要するものです。直接的な変更の際には ArrayAccess::offsetSet() がコールされますが、間接的な変更の際には ArrayAccess::offsetGet() がコールされます。この場合は ArrayAccess::offsetGet() の実装が参照を返せるようにしておく必要があります。 そうしなければ
E_NOTICE
メッセージが発生します。