3

PHP 変数変数がどのように機能するかは知っていますが、このスクリプトが「I am r」を出力する理由がわかりません。「私はBです」の代わりに。

<?php
class fooo {
    var $bar = 'I am bar.';
    var $arr = array('I am A.', 'I am B.', 'I am C.');
    var $r   = 'I am r.';
}
$fooo = new fooo();
$arr = 'arr';
echo $fooo->$arr[1] . "\n";
//above line output
//I am r.
?> 
4

3 に答える 3

5

クラスFoo内の配列ではなく、文字列「arr」から2番目の文字を定義$arr = 'arr';して取得しているため、「r」を取得[1]しています(単語から2番目の文字を返します)。

ソリューション?あなたは置き換える必要があります:

echo $fooo->$arr[1] . "\n";

と:

echo $fooo->arr[1] . "\n";

目的の出力が得られるはずです。

'I am B.'
于 2013-03-20T23:46:31.060 に答える
0

オブジェクト プロパティを参照する場合、それは変数自体ではなく、変数の名前です。だからあなたはしたいでしょう:

echo $fooo->arr[1] . "\n";

あなたが期待したものを得るために。

于 2013-03-20T23:46:38.317 に答える