每当需要从变量中读取值时,就需要知道需要公式化哪个表达式才能访问该值。
对于一个简单的变量值,这很简单,您只需获取变量名称并通过在其前面加上$
符号就可以将其作为变量访问:
var_dump($variable);
但是,这仅适用于诸如string
或的简单数据类型integer
。也有复合数据类型,即array
和object
。它们可以包含其他数据类型,无论是简单数据还是复合数据。您可以在PHP手册中学习如何访问数组的值以及如何从对象访问它们的值我想您已经知道了一点,所以只需要在这里链接即可。
了解到这一点后,您可以将其组合起来。例如,如果对象内有一个数组,并且其中有一个您想要获取的字符串,则需要将$
符号和变量名与所需的访问器,属性名和数组键结合在一起。然后,您便获得了价值。您发布的数据表明您有一个包含其他对象和数组的对象,最后找到了变量名。
一些组合示例:
var_dump($variable->handler->view[0]->_field_data);
这是基于您上面提供的数据。$variable
就是你开始,->
用于需要被命名然后(例如,一个名称为变量)访问对象的成员:handler
。如您在handler
作为对象的调试输出中所看到的,您需要再次使用->
来访问view
它的成员。
现在view
有所不同,因为它是一个数组。您可以通过使用[]
并将键放在其中来访问数组的值。在我的示例中,关键是数字0
。由于该数组条目的值再次是一个对象,因此在下一步中,您需要->
再次使用。
您可以继续该游戏,直到到达您感兴趣的元素为止。已经拥有的调试输出可帮助您编写返回值的表达式。可能是:
$field_image->handler->view->result[0]->_field_data['nid']['entity']->field_image['und'][0]['filename']
但是我无法在我的系统上完全验证这一点。
但是,当发现问题时,使用它会很有帮助,var_dump
因为您可以逐步扩展表达式直到找到元素。如果输入错误,您将立即看到。有时die();
在var_dump
语句后放置a有助于避免在包含很多其他数据(这些信息将对您隐藏)之前结束响应。devel插件提供了附加的调试例程来转储突出的值。