如何访问类对象中的数组值?

时间:2011-08-25 20:29:09

标签: php arrays oop object scope

我在函数中有这样的数组:

$value = array("name"=>"test", "age"=>"00");

我在班级abc中将这个$值公之于众。

现在在我的另一个文件中,我想访问这个数组中的值,所以我创建了一个实例:

$getValue = new <classname>;
$getValue->value..

我不知道如何继续,以便我可以访问该数组中的每个元素。

4 个答案:

答案 0 :(得分:8)

你提到$value在一个函数中,但是是公开的。你可以发布这个函数,或澄清你是否意味着在一个函数中声明或实例化?

如果你实例化它是完全正常的,你可以使用数组键来索引$value,就像任何其他数组一样:

$object = new classname;
$name = $object->value["name"];
$age = $object->value["age"];

// Or you can use foreach, getting both key and value
foreach ($object->value as $key => $value) {
    echo $key . ": " . $value;
}

但是,如果您在某个函数中谈论声明 public $value,那么这就是语法错误。

此外,如果您声明$value(在函数内)而不使用 public修饰符,则其scope仅限于该函数,且不能为{{ 1}}。在函数结束时,数组将超出范围,并且所有意图和目的都不再存在。

如果这部分看起来令人困惑,我建议您阅读visibility in PHP

答案 1 :(得分:1)

与通常使用数组相同。

$getValue = new yourClass();
$getValue->value['name'];

答案 2 :(得分:1)

使用代码

foreach($getValue->value as $key=>$value)

答案 3 :(得分:0)

    <?php
        interface Nameable {
            public function getName($i);
            public function setName($a,$name);
        }
        class Book implements Nameable {
            private $name=array();
            public function getName($i) {
                return $this->name[$i];
            }
            public function setName($i, $name) {
                return $this->name[$i] = $name;
            }
        }

        $interfaces = class_implements('Book');

        if (isset($interfaces['Nameable'])) {
            $bk1 = new Book;
            $books = array('bk1', 'bk2', 'bk3', 'bk4', 'bk5');
            for ($i = 0; $i < count($books); $i++)
                $bk1->setName($i, $books[$i]);
            for ($i = 0; $i < count($books); $i++)
                echo '// Book implements Nameable: ' . $bk1->getName($i) . nl();
        }
?>