2012-07-20 146 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

相关问题