从标准类对象访问元素

I am trying to retrieve a variable in the Drupal Module Viewsphp but my problem is really just accessing nested elements in stdclass object.

print_r($data->node_created); // gives correct value 1477420603

print_r($data->_field_data->nid->entity->vid); returns nothing should be 31

What am I doing wrong ?

Here is an extract of the data returned:

stdClass Object
(
[node_title] => Denver
[nid] => 31
**[node_created] => 1477420603**
[field_data_body_node_entity_type] => node
[field_data_field_colour_node_entity_type] => node
[field_data_field_type_node_entity_type] => node
[_field_data] => Array
    (
        [nid] => Array
            (
                [entity_type] => node
                [entity] => stdClass Object
                    (
                        **[vid] => 31**
                        [uid] => 1
                        [title] => Denver
                        [log] => 
                        [status] => 1
                        [comment] => 2
                        [promote] => 1
                        [sticky] => 0
                        [nid] => 31
                        [type] => test1
                        [language] => und

You are using an object at first use the object operator ->. This is how you access attributes or methods of an object. This will return the value of that operation.

//This is accessing the array stored in _field_data
$data->_field_data;

//Since that is an array now you have to access
//the data in it with the indexes of the array

$data->_field_data['nid']['entity'];

Notice though that in your output [entity] => stdClass Object entity is back to an object so you need to go back to the ->.

//Full access

$data->_field_data['nid']['entity']->vid;

Normally objects have accessors or getter methods ie getVid() methods. Not sure if that is the case here but it you could then access data like $data->getVid(); which is a lot simpler and can protect your code down the road if the underlying api changes. Worth looking into the docs or code for.