2011-09-02 13 views
0

こんにちは私はDrupalで作業しており、私は非常にfamilierではない私は、これらの 'セレクタ'の違いは何ですか?正しい言葉)?php配列セレクタ

これは、エラーが発生し、「致命的なエラー:中...配列としてのタイプはstdClassのオブジェクトを使用することはできません」この作品

$node['field_geoloc'] 

(IMがあれば、それを使用して=空文!)

$node->field_geoloc 

うまく簡単な質問... ありがとうございます。

+0

を経由してアクセスすることができます多くのコードを表示します--- –

答えて

2

かなり簡単...エラーがそれをすべて言う:

"Fatal error: Cannot use object of type stdClass as array in..."

あなたは、配列のようなオブジェクトを使用しようとしています。

オブジェクトのプロパティは、以前使用していた方法012Bを使用してアクセシブルにアクセスできません。あなたがオブジェクトを持っている場合は、あなたがget_object_varsメソッドを使用して、その配列からプロパティを取得することができます

`$object->property` 

:あなたは次のようにプロパティにアクセスする必要があります。しかし、Drupalの$ノードでこのメソッドを使うべきではないという経験から知っています。

+0

ありがとう、私は学ぶべきことがたくさんある!:) – Purplemonkey

+0

私は思考の中で正しい=>は、オブジェクトプロパティに値を変更/挿入するのと反対です。 – mintuz

1

オブジェクトを配列として使用することはできません。

最初は配列で、2番目はオブジェクトです。

0

最初のものは配列であり、2番目のものは(クラスStdClassの)オブジェクトです。 しかし、あなたは、このインタフェースに興味があるかもしれない:http://php.net/manual/en/class.arrayaccess.php配列としてオブジェクトにアクセスすることができます(そう、あなたが$ OBJ [「キー」]ではなく$ obj->キーの)

2

->は、パブリックオブジェクトのプロパティにアクセスするための演算子です(そしてパブリックメソッドを呼び出す)。オブジェクトプロパティを$object['key']構文でアクセスするには、ArrayAccessを実装する必要があります。その他のオプションは、アレイ($node = (array) $node(にオブジェクトをキャストすることですが、これが唯一の最初のレベルのキーのために働く、例えばそれは$node['page']['title']$node->page->title$node['page']$node->pageをオンにしませんが - 後には$node['page']->title