访问类内部的数组变量

时间:2011-09-05 11:55:50

标签: php scope

我有一个数组。但我不知道如何在课堂上访问它。

下面是我的示例代码。

<?php

$value[0]=11;
$value[1]=22;
$value[2]=33;

class test {
    var $code1,$code2,$code3;

    function __construct() {
            $this->$code1 = $value[0];
            $this->$code2 = $value[1];
            $this->$code3 = $value[2];
            echo $code1;
        }
}

4 个答案:

答案 0 :(得分:1)

Read this

您可以执行以下任何一项操作:

将值作为参数(推荐选项)

传递给构造函数
<?php

$value[0]=11;
$value[1]=22;
$value[2]=33;

class test {
    var $code1,$code2,$code3;

    function __construct($value) {
            $this->code1 = $value[0];
            $this->code2 = $value[1];
            $this->code3 = $value[2];
            echo $this->code1;
        }

}

$obj = new test($value);

?>

使用$GLOBALS数组docs

<?php

$value[0]=11;
$value[1]=22;
$value[2]=33;

class test {
    var $code1,$code2,$code3;

    function __construct() {
            $this->code1 = $GLOBALS['value'][0];
            $this->code2 = $GLOBALS['value'][1];
            $this->code3 = $GLOBALS['value'][2];
            echo $this->code1;
        }

}

$obj = new test;

?>

使用global关键字docs

<?php

$value[0]=11;
$value[1]=22;
$value[2]=33;

class test {
    var $code1,$code2,$code3;

    function __construct() {
            global $value;
            $this->code1 = $value[0];
            $this->code2 = $value[1];
            $this->code3 = $value[2];
            echo $this->code1;
        }

}

$obj = new test;

?>

备注

我已经纠正了上面的几个错误。

您应该使用$this->code1代替$this->$code1。第二个版本在语法上是有效的,但意味着其他东西。请考虑以下示例:

 class myClass {

   public $myVar = "My Var";
   public $anotherVar = "Another Var";

   function __construct () {

     // creates a local variable to the constructor, called $myVar
     // does NOT overwrite the value defined above for the object property
     $myVar = "anotherVar";

     echo $myVar; // echoes 'anotherVar'
     echo $this->myVar; // echoes 'My Var'
     echo $this->$myVar; // echoes 'Another Var'

   }

 }

此外,上面的示例说明了您应该使用echo $this->code1;而不仅仅是echo $code1;

的原因

答案 1 :(得分:0)

class test { 
    private $code1,$code2,$code3;

    function __construct($value) {
        $this->code1 = $value[0];
        $this->code2 = $value[1];
        $this->code3 = $value[2];
        echo $this->code1;
    }
}

用法:

$test = new Test($value);

答案 2 :(得分:0)

这样的事情:

class test
{
    var $code1,$code2,$code3;

    function __construct($input)
    {
        $this->code1 = $input[0];
        $this->code2 = $input[1];
        $this->code3 = $input[2];
    }
}

[...]

$value[0]=11;
$value[1]=22;
$value[2]=33;

$test = new test($value);

答案 3 :(得分:0)

除非使用global关键字,否则全局变量在函数内部不可见。 e.g:

// Global variable
$x = 5;

// Won't affect the global
function foo()
{
    $x = 3;
}

// Will affect the global
function bar()
{
    global $x;
    $x = 2;
}

注意

但是,一般来说,使用像这样的全局变量并不是一个好主意。它引入了依赖关系,使您的代码更难以测试和调试。我建议你把变量作为参数传递给你的构造函数。