JDesigns
JDesigns

Reputation: 2332

How to access array values inside class object?

I have a array like this in a function:

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

I made this $value as public inside the class abc.

Now in my other file, I want to access the values from this array, so I create an instance by:

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

I'm not sure how to proceed so that then I can access each element from that array.

Upvotes: 8

Views: 36825

Answers (4)

Rob
Rob

Reputation: 5286

You mentioned that $value is in a function, but is public. Can you post the function, or clarify whether you meant declaring or instantiating within a function?

If you're instantiating it that's perfectly fine, and you can use the array keys to index $value just like any other array:

$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;
}

However, if you're talking about declaring public $value in a function then that's a syntax error.

Furthermore if you declare $value (within a function) without the public modifier then its scope is limited to that function and it cannot be public. The array will go out of scope at the end of the function and for all intents and purposes cease to exist.

If this part seems confusing I recommend reading up on visibility in PHP.

Upvotes: 8

Apollon
Apollon

Reputation: 1

    <?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();
        }
?>

Upvotes: 0

Andrej
Andrej

Reputation: 7504

Use code

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

Upvotes: 1

Ashley
Ashley

Reputation: 1489

The same as you would normally use an array.

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

Upvotes: 2

Related Questions