从标准 class 对象访问元素
Accessing element from standard class object
我试图在 Drupal 模块 Viewsphp 中检索一个变量,但我的问题实际上只是访问 stdclass 对象中的嵌套元素。
print_r($data->node_created); // 给出正确的值 1477420603
print_r($data->_field_data->nid->entity->vid);
returns 什么都不应该是 31
我做错了什么?
这是返回数据的摘录:
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
您正在使用一个对象,首先使用对象运算符->
。这就是您访问对象的属性或方法的方式。这将 return 该操作的值。
//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'];
请注意,虽然在您的输出中 [entity] => stdClass Object
实体返回到一个对象,因此您需要返回到 ->
。
//Full access
$data->_field_data['nid']['entity']->vid;
通常对象有访问器或 getter 方法,即 getVid() 方法。不确定这里是否是这种情况,但你可以访问像 $data->getVid();
这样的数据,这要简单得多,并且可以在底层 api 发生变化时保护你的代码。值得研究的文档或代码。
我试图在 Drupal 模块 Viewsphp 中检索一个变量,但我的问题实际上只是访问 stdclass 对象中的嵌套元素。
print_r($data->node_created); // 给出正确的值 1477420603
print_r($data->_field_data->nid->entity->vid); returns 什么都不应该是 31
我做错了什么?
这是返回数据的摘录:
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
您正在使用一个对象,首先使用对象运算符->
。这就是您访问对象的属性或方法的方式。这将 return 该操作的值。
//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'];
请注意,虽然在您的输出中 [entity] => stdClass Object
实体返回到一个对象,因此您需要返回到 ->
。
//Full access
$data->_field_data['nid']['entity']->vid;
通常对象有访问器或 getter 方法,即 getVid() 方法。不确定这里是否是这种情况,但你可以访问像 $data->getVid();
这样的数据,这要简单得多,并且可以在底层 api 发生变化时保护你的代码。值得研究的文档或代码。