PHPで、オブジェクト内の配列の要素にアクセスしたいとき

class Hoge
{
    public $foo = array(1, 2, 3);
}
$foo = 'foo';
$hoge = new Hoge;
echo $hoge->{$foo}[1] . "\n";
echo $hoge->foo[1] . "\n";

あまり使わないと思いますが、、get_object_varsと組み合わせて使いたい場面が出たので。
{}が重要。
$fooを{}で囲わないと$foo[1]が優先されて”o”になってしまい(文字列にも添え字でアクセスできてしまうので)エラーになるようだ。

PHP Notice:  Undefined property:  Hoge::$o

最初はarray_sliceとcurrentを併用していた。

This entry was posted in いじる. Bookmark the permalink. Both comments and trackbacks are currently closed.

Page optimized by WP Minify WordPress Plugin