Как получить доступ к значениям массива внутри объекта класса? - PullRequest
8 голосов
/ 26 августа 2011

У меня есть такой массив в функции:

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

Я сделал это значение $ общедоступным внутри класса abc.

Теперь в моем другом файле я хочу получить доступзначения из этого массива, поэтому я создаю экземпляр следующим образом:

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

Я не уверен, как поступить, чтобы затем я мог получить доступ к каждому элементу из этого массива.

Ответы [ 4 ]

8 голосов
/ 26 августа 2011

Вы упомянули, что $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 ограничен этой функцией и не может быть public.Массив выйдет из области видимости в конце функции и для всех намерений и целей прекратит свое существование.

Если эта часть кажется запутанной, я рекомендую прочитать о видимости в PHP .

1 голос
/ 26 августа 2011

Используйте код

foreach($getValue->value as $key=>$value)
1 голос
/ 26 августа 2011

Так же, как вы обычно используете массив.

$getValue = new yourClass();
$getValue->value['name'];
0 голосов
/ 07 ноября 2013
    <?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();
        }
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...