0

我有一些附加到各种分类法的内容类型(节点)。对于特定的节点类型,我想对分类进行一些验证。我不想对引用分类的节点类型及其对应字段进行硬编码。所以我把它们放在数组中。

但是,我无法取消引用字段名称。我尝试过双 $$、引号等,但无法正常工作。我想做的事可能吗?

下面是我正在尝试使用的独立 PHP。

<?php

$node = (object) array(
    'nid' => NULL,
    'vid' => NULL,
    'uid' => '1',
    'type' => 'price_document',
    'language' => 'und',
    'field_taxonomy_price' => array(
        'und' => array(
            array(
                'tid' => '94'
            )
        )
    ),
);


  $nodes_to_check = array("price_document" => "field_taxonomy_price",
                          "package"        => "field_taxonomy_package",
                         );



  if (array_key_exists($node->type,$nodes_to_check)) {
    $taxonomy_field = $nodes_to_check[$node->type];
    print_r($taxonomy_field);
    $tid = $node->field_taxonomy_price ['und'][0]['tid']; //  <- this works but, how
    //$tid = $node->"$$taxonomy_field" ['und'][0]['tid'];     <- can I deref variable?
  }
?>
4

1 回答 1

1

好吧,你可以这样做:

 $taxonomy_field = $nodes_to_check[$node->type];
 $tid = $node->{$taxonomy_field}['und'][0]['tid];

你不需要双美元符号。如果你想做这样的事情:

 $dog = "I am a dog";
 $var = "dog";
 $$var = "Now I'm a pussycat";
 echo $dog; // Output: Now I'm a pussycat
于 2012-05-10T18:29:24.707 回答