2012-07-20 38 views
0
<?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); 

任何人都可以解釋爲什麼我的數組$ arr在方法添加($ val)後爲NULL? 我嘗試在方法「add」中回顯數組$ arr,並且在此方法中$ arr包含come值; 但在另一種方法它變成NULL? 什麼是魔法我do't理解,因爲它被定義僅局部邏輯(爲什麼數組在PHP中爲NULL?

+0

你忘了使用$這個方法裏面 – 2012-07-20 21:54:18

回答

1

要使用類的成員,你必須使用$此;。

$this->arr 
+0

哦......謝謝你......我did'nt知道,在PHP它是如此重要......我,其實,寫C#代碼,在C#中並不重要...謝謝:) – 2012-07-20 21:56:53

+0

@ user1446725:沒問題;) – 2012-07-20 22:02:57

1

那是因爲你聲明一個變量$arr每一次和每一個方法,它只是新的,因爲功能有自己的範圍

您需要設置的屬性,這樣的:。$this->arr = array(...);屬性在對象範圍存在,所以他們從每一個方法可以訪問

0

您用一個參數聲明該函數:

function add($val) {} 

但是傳給它兩個。爲什麼在每個函數中都使用類屬性的本地副本? 修正您的代碼之前談論神奇:)

+0

「魔術」是你不明白的事情。 OP顯然不理解範圍解析是如何在這裏工作的,或者這個問題不會被問到。 – 2012-07-20 21:57:55

0

使用$this->arr而不是$arr在所有方法的身體。

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); 
+1

這個'$ cont-> add(「derek」,'chmo');'對第二個參數沒有用處。 – 2012-07-20 22:04:05

+0

@AlexanderPalamarchuk,尼斯信息,我已經做了更新,謝謝! – 2012-07-20 22:07:31