How to get data from array in object

2020-04-21 02:34发布

问题:

I can't seem to get specific data from an array inside an object.

$this->fields->adres gets the address correctly, but i can't get a level deeper.

I've tried:

$this->fields->province
$this->fields->province->0
$this->fields->province[0]

And: (edit)

$this->fields["province"][0]
$this->fields['province'][0]
$this->data->fields['province'][0]

But it does not return anything while it should return "Flevoland".

First part of the object print_r($this, TRUE) below:

RSMembershipModelSubscribe Object
(
    [_id] => 2
    [_extras] => Array
        (
        )

    [_data] => stdClass Object
        (
            [username] => testzz
            [name] => testzz
            [email] => xxxx@example.com
            [fields] => Array
                (
                    [province] => Array
                        (
                            [0] => Flevoland
                        )

                    [plaats] => tesdt
                    [adres] => test

回答1:

As you can see by your output, object members are likely to be private (if you follow conventions, anyway you must prepend an underscore while calling them), so you're calling them the wrong way; This code works:

$this->_data->fields['province'][0];

You can see it in action here; I created a similar object, and using

$membership = new RSMembershipModelSubscribe();
echo $membership->_data->fields['province'][0];

outputs "Flevoland" as expected.



回答2:

You can also use type casting.

$fields = (array) $this->data->fields;
echo $fields['province'][0];


回答3:

As fields is already an array, try this:

$this->fields['province'][0]

This assuming the [_data] object is $this.



回答4:

Fields and province are both arrays, you should be trying $this->fields["province"][0]



回答5:

$this->_data->fields['province'][0]