能够在print_r()的输出中看到一个变量,但是不确定如何在代码中访问它
我用谷歌搜索,安装了Devel,Drupal for Firebug,但找不到。
我找到 了 我想要的东西,我知道它 在哪里 ;我只是不知道 如何 得到它。
我将其放在代码括号中,但是Devel告诉我文件名(我想粘贴到.tpl.php文件中)在这里:
field_image(Object)stdClass 处理程序(对象)views_handler_field_field
视图(对象)视图
结果(数组,2个元素)
0(对象)stdClass
_field_data(数组,1个元素)
nid(数组,2个元素)
实体(Object)stdClass
field_image(数组,1个元素)
und(Array,1 element)
0(数组,11个元素)
文件名(字符串,23个字符)FILENAME.jpg
那么,如何使用PHP输出FILENAME.jpg?
<?php print $something->other; ?>
回答:
每当需要从变量中读取值时,就需要知道需要公式化哪个表达式才能访问该值。
对于一个简单的变量值,这很简单,您只需获取变量名称并通过在其前面加上$
符号就可以将其作为变量访问:
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插件提供了附加的调试例程来转储突出的值。
以上是 能够在print_r()的输出中看到一个变量,但是不确定如何在代码中访问它 的全部内容, 来源链接: utcz.com/qa/401119.html