アプリ版:「スタンプのみでお礼する」機能のリリースについて

1: <?php
2: class foo {
3: var $bar = 'I am bar.';

4: var $arr = array('I am A.', 'I am B.', 'I am C.');
5: var $r = 'I am r.';
6: }
7:
8: $foo = new foo();
9: $bar = 'bar';
10: $baz = array('foo', 'bar', 'baz', 'quux');
11: echo $foo->$bar . "\n";
12: echo $foo->$baz[1] . "\n";
13:
14: $start = 'b';
15: $end = 'ar';
16: echo $foo->{$start . $end} . "\n";
17:
18: $arr = 'arr';
19: echo $foo->$arr[1] . "\n";
20: echo $foo->{$arr}[1] . "\n";
21:
22: ?>

上記のコードの実行結果が、

I am bar. ←①
I am bar. ←②
I am bar. ←③
I am r. ←④
I am B. ←⑤

となります。実行結果の上から①、②、③、④、⑤と番号をつけます。
①は理解できるのですが②~⑤がなぜその結果になるのかわかりません。なぜこうなるのでしょうか?
11行目はfooクラスから作成されたfooオブジェクトのメンバ変数$barを表示させる、ということだと思います。そうすると12行目はfooオブジェクトのメンバ変数$baz[1]を…ということかと思うのですが、fooクラスのメンバ変数は$bar,$arr,$rなのでメンバ変数に$baz[1]はありません。
③~⑤も何なのかよくわかりません。php.netの言語リファレンスの可変変数のサンプルコードで、可変変数の説明は理解できるのですが、クラスのプロパティには可変プロパティ名でアクセスできる…、という部分が理解できません。

A 回答 (2件)

とりあえず 1 のところ (つまり


「11行目はfooクラスから作成されたfooオブジェクトのメンバ変数$barを表示させる、ということだと思います。」
のところ) が間違いであることに気づいてください.
    • good
    • 0

2 だけ:


$baz[1]
の値はなんですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!