ArrayObjectと多次元配列とisset

<?php
error_reporting( E_ALL );

$ary = array();

if ( isset($ary['foo']['bar']) ) {}

は警告は出ないが

<?php
error_reporting( E_ALL );

$ary = new ArrayObject();

// Notice: Undefined index:  foo
if ( isset($ary['foo']['bar']) ) {}

は警告が出る。

ArrayObjectの場合、あくまでも配列っぽい動きをエミュレートしてるだけなので上記のような多次元の配列に対してissetをしてもArrayObject::offsetGetの時点で警告が出てしまう。

回避方法はぶっちゃけ無くて地道に

<?php
error_reporting( E_ALL );

$ary = new ArrayObject();

if ( isset($ary['foo']) && isset($ary['foo']['bar']) ) {}

としなければならないっぽい。

楽するために使ってるArrayObjectのはずなのに、楽じゃなくなってる謎。