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 に答える