0

これは Drupal にありますが、通常の PHP にも適用できるはずです。

field-event-address は、 の下にある配列です$entity_fetched

<?php if ($entity_fetched->field-event-address != "") echo $entity_fetched->field-event-address['und']['0']['value']; ?>

['und']['0']['value']何らかの理由で、これを行うと、オフのままにしておくと次のエラーが発生します。

Notice: Undefined property: stdClass::$field in eval() (line 7 of /opt/staging/contitemp/public_html/sites/all/modules/rules/modules/php.eval.inc(125) : eval()'d code).
Notice: Use of undefined constant event - assumed 'event' in eval() (line 7 of /opt/staging/contitemp/public_html/sites/all/modules/rules/modules/php.eval.inc(125) : eval()'d code).
Notice: Use of undefined constant address - assumed 'address' in eval() (line 7 of /opt/staging/contitemp/public_html/sites/all/modules/rules/modules/php.eval.inc(125) : eval()'d code).

そのままにしておくと、このエラーが発生します。

Parse error: syntax error, unexpected '[', expecting ',' or ';' in /opt/staging/contitemp/public_html/sites/all/modules/rules/modules/php.eval.inc(125) : eval()'d code on line 7

オブジェクトの下の配列が空かどうかを確認し、そうでない場合は配列の内容をエコーする if ステートメントを作成しようとしています。

私は本当にこれで頭を悩ませています - オブジェクトの下にある場合、配列が空であるかどうかを確認できるはずですよね?

4

2 に答える 2

1

-PHP では、変数名に記号を使用することはできません。そのため、構文エラー (または、PHP が意味を理解しようとしている場合は未定義の定数) が発生します。

代わりに、名前を に変更できます$entity_fetched->fieldEventAddress(まだ読み取り可能で、現在は正しいです)。

于 2013-10-08T15:20:50.207 に答える
0

Drupal の場合、エンティティ メタデータ ラッパーを使用する必要があります。

したがって、コードは次のようになります。

$wrapper = entity_metadata_wrapper('entity_type', $fetched_entity);
$value = $wrapper->field_name->value();
if (!empty($value)) echo $value;

エンティティ メタデータ ラッパーの詳細については、 https ://drupal.org/node/1021556 を参照してください。

于 2013-10-08T17:16:00.110 に答える