2016-10-25 3 views
0

Drupal Module Viewsphpで変数を取得しようとしていますが、実際にはstdclassオブジェクトのネストされた要素にアクセスしているだけです。標準クラスオブジェクトから要素にアクセスする

print_r($ data-> node_created); //正しい値を与える1477420603

print_r($ data - > _ field_data-> nid-> entity-> vid); 何も返されません31

私は間違っていますか?あなたが最初に使用するオブジェクトのオペレータ->でオブジェクトを使用している

stdClass Object 
(
[node_title] => Denver 
[nid] => 31 
**[node_created] => 1477420603** 
[field_data_body_node_entity_type] => node 
[field_data_field_colour_node_entity_type] => node 
[field_data_field_type_node_entity_type] => node 
[_field_data] => Array 
    (
     [nid] => Array 
      (
       [entity_type] => node 
       [entity] => stdClass Object 
        (
         **[vid] => 31** 
         [uid] => 1 
         [title] => Denver 
         [log] => 
         [status] => 1 
         [comment] => 2 
         [promote] => 1 
         [sticky] => 0 
         [nid] => 31 
         [type] => test1 
         [language] => und 
+0

これを試してみて、 '$ data - > _ field_data ['nid] [' entity '] - > vid;'それが動作するかどうかを説明することができます – nerdlyist

答えて

1

:ここ

は、返されるデータの抽出物です。これは、オブジェクトの属性またはメソッドにアクセスする方法です。これはその操作の値を返します。あなたが戻っ ->に行く必要があるので、あなたの出力 [entity] => stdClass Objectエンティティでそのかかわら

//This is accessing the array stored in _field_data 
$data->_field_data; 

//Since that is an array now you have to access 
//the data in it with the indexes of the array 

$data->_field_data['nid']['entity']; 

お知らせバックオブジェクトにあります。

//Full access 

$data->_field_data['nid']['entity']->vid; 

通常、オブジェクトにはアクセサまたはゲッターメソッド、つまりgetVid()メソッドがあります。それがここに当てはまるかどうかは分かりませんが、それよりも簡単なもので、基になるAPIが変更された場合には、コードを保護することができる$data->getVid();のようなデータにアクセスできます。ドキュメントやコードを探す価値があります。

+0

ありがとうnerdylist - 答えと説明の両方。 – peter300

関連する問題