ArrayObjectは便利だけと扱いづらいね

配列のように振舞えるArrayObjectなんだけど、あくまでもオブジェクトなので結局のところ配列を期待する標準関数との相性が悪すぎて微妙。

is_arrayは偽になっちゃうし、array_shiftはうまく動かないし。

array_flipとかarray_uniqueとかには一応渡せるけど戻り値は配列になってるのでこれまた微妙。

折角配列っぽく扱えるのに標準関数に渡せないので、非常に使いどころが難しくなる上に後々の混乱の元となりそうだ。

文字列評価された時の振る舞いを定義できる__toStringみたいな感じで、配列評価された時の振る舞いを定義できる__toArrayみたいな構文を用意してくれればちょっとはマシになりそうなんだけどねー。

とにかくせめてis_arrayだけでも真になって欲しいなぁ・・・。

仕方ないので今はこんな関数用意してやってます。

<?php

function is_array_access (&$array) {
    return (is_array($array) || $array instanceof ArrayAccess);
}