能够在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。也有复合数据类型,即arrayobject。它们可以包含其他数据类型,无论是简单数据还是复合数据。您可以在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

回到顶部