【问题标题】:Pull object as variable from PHP array (in Drupal 7 module)从 PHP 数组中提取对象作为变量(在 Drupal 7 模块中)
【发布时间】:2019-05-31 21:55:35
【问题描述】:

希望我以一种有意义的方式提出这个问题。虽然我可能没有正确地措辞我的搜索词,但找不到任何可以回答这个问题的东西。

在我的 Drupal 7 自定义模块中,我能够使用以下对象运算符(箭头 ->)语法成功地从分类数组中获取数据

$term = taxonomy_term_load($taxonomy_tid);
$description = $term->description;
echo $description;

如何使“描述”标签本身成为变量?设置将是:

$term = taxonomy_term_load($taxonomy_tid);
$description_name_from_array = 'description';
$description = $term->????;
echo $description;

不起作用的事情:

  • $term->$description_name_from_array
  • $term->[$description_name_from_array]
  • $term->&$description_name_from_array

【问题讨论】:

  • 我认为您将不得不重新表述您的问题。对我来说,你想要做什么是没有意义的。 taxonomy_term_load 返回一个分类对象,我不确定你为什么指的是数组。您是否尝试在分类对象本身上设置新变量?
  • 也许如果你扩大你的问题并告诉我们你想要完成什么。

标签: php arrays drupal drupal-7


【解决方案1】:

花括号在特定情况下可能需要,但您的第一次尝试应该可以访问描述。从对象访问简单变量属性的正确语法是

 $obj->$property

类属性也可以使用变量属性名来访问。 变量属性名称将在范围内解析 发出的呼叫。例如,如果您有这样的表达式 作为$foo->$bar,则将检查本地范围的$bar 及其 value 将用作$foo 的属性名称。这也是 如果 $bar 是数组访问,则为 true。

虽然用花括号封装变量以明确分隔属性名称,但更安全:

$obj->{$property}

需要时:

  • 访问包含数组的属性中的值:$obj->${$properties[0]}
  • 当属性名称由多个部分组成时:$obj->{$a . $b}
  • 使用常量访问属性时:$obj->{CONSTANT_NAME}
  • 或当属性名称包含无效字符时

查看 PHP 的Variable Variables

【讨论】:

  • 大括号成功了! $description = $term->{$description};
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-13
相关资源
最近更新 更多