-1
<?php    

class ffooo
{
    public $arr;

    function __construct()
    {
        $arr=array();
    }

    function add($val)
    {
        $arr[]=$val;
    }

    function get($ind)
    {
        return $arr[$ind];
    }
}

$cont=new ffooo();
$cont->add("derek",'chmo');
echo $cont->get(0);
var_dump($cont);

メソッド add($val) の後で配列 $arr が NULL になる理由を誰か説明してもらえますか? メソッド「add」で配列 $arr をエコーし​​ようとしましたが、このメソッドでは $arr に値が含まれていました。しかし、別の方法ではNULLになりましたか? 魔法とは何ですか?私はその論理を理解していません(

4

5 に答える 5

1

ローカルでのみ定義されるためです。クラス メンバーを使用するには、$this; を使用する必要があります。

$this->arr
于 2012-07-20T21:54:29.440 に答える
1

$arrこれは、毎回変数を宣言するためです。そして、関数には独自のスコープがあるため、すべてのメソッドで新しいだけです。

次のようにプロパティを設定する必要があります$this->arr = array(...);。プロパティはオブジェクト スコープに存在するため、すべてのメソッドからアクセスできます。

于 2012-07-20T21:54:48.303 に答える
0

使用するのを忘れました$this。以下のコードを参照してください。

<?php    

class ffooo
{
    public $arr;

    function __construct()
    {
        $this->arr = array();
    }

    function add($val)
    {
        $this->arr[] = $val;
    }

    function get($ind)
    {
        return $this->arr[$ind];
    }
}

$cont=new ffooo();
$cont->add('derek');
echo $cont->get(0);
var_dump($cont);
于 2012-07-20T21:55:52.517 に答える
0

すべてのメソッドの本体の$this->arr代わりに使用します。$arr

于 2012-07-20T21:55:21.903 に答える
0

引数を 1 つ指定して関数を宣言しました。

function add($val) {}

しかし、それに2つ渡してください。また、すべての関数でクラス プロパティのローカル コピーを使用するのはなぜですか? 魔法について話す前にコードを修正してください:)

于 2012-07-20T21:54:50.380 に答える