0

クラスがあり、それぞれが常に同じ命名形式を持つ日付関連のメンバー変数を持っています-field_{$node->type}_date

たとえば、ノード タイプが「車」の場合、日付フィールドの名前はfield_car_date

そのため、すべてのノードをループしており、それぞれの日付関連フィールドにアクセスしたいと考えています。しかし、私はエラーが発生しています。これがコードです

$date_field_key = 'field_' . $node->type . '_date';
if (isset($node->$date_field_key['und'][0]['value'])) {

2 行目でエラーが発生します。エラーは次のとおりです-Illegal string offset 'und' 日付関連の変数は配列であり、キー「und」を持つ要素があります。行を明示的に書き出すと、$node->field_car_date['und'][0]['value']問題なく動作します。この問題が発生するのは、フィールド名を動的に作成するときだけです。

これに対する解決策はありますか、私の構文は間違っていますか?

4

2 に答える 2

5

{}動的に割り当てられる変数であるため、キー値を囲む必要があります。

2行目に、$node->$date_field_key['und'][0]['value']あるべき場所があります:

$node->{$date_field_key}['und'][0]['value']

{}周囲に注意してくださいdate_field_key

幸運を!

于 2012-08-12T20:00:39.733 に答える
2

変数を惜しまない理由はありません。

$array = $this->$date_field_key;
$value = $array['und'][0]['value'];

それが機能するようになったら、より高度なトピックについて話し合うことができます。

于 2012-08-12T20:03:04.403 に答える