web-dev-qa-db-ja.com

警告:array_flip():反転できるのはSTRING値とINTEGER値のみです!

コマース拡張モジュールにフックするカスタムモジュールがあります。

この関数は、製品の支払いを分割し、製品の作成を支援した受益者にそれを分割します。

製品コンテンツタイプの フィールドコレクション フィールドでuser_referanceモジュールを使用して、システムの受益者ユーザーを格納します。 drupalシステムログは、関数を実行するとこれを示します

Warning: array_flip(): Can only flip STRING and INTEGER values! in      EntityAPIController->load() (line 219 of /www/opigno/profiles/opigno_lms/modules/contrib/entity/includes/entity.controller.inc).

Drupalsのエラーバックトレース機能は、エラーがこの行から発生したことを示しました

  if (!empty($item_id)){
      $split_pay = commerce_funds_object_to_array(entity_load('field_collection_item',
array($item_id)));
  }

関数は問題なく実行されますが、発生しているバグをつぶしたいのですが、$item_id配列には受益者ユーザーのuser_idsのみが含まれているため、整数以外の値がなぜなのか本当にわかりません合格した

2
James Kirkby

同様の問題がありました。それが文字列ではなく整数であることを確認する必要があります。また、entity_load_singleを使用できます。

if (!empty($item_id)){
$item_id = (int) $item_id;
  $split_pay = commerce_funds_object_to_array(entity_load_single('field_collection_item', $item_id));
}
2
PedroSP

あなたが言及したように_$item_id_がすでに配列である場合:

$ item_id = {array} [2] 0 = "12" 1 = "14"

その後、再度配列にラップする必要はありません。

次のように直接使用します。

_entity_load('field_collection_item', $item_id);
_

@Mołot の提案に従って、またはそれが正しい期待される形式であることを確認してください。

参照: entity_load() API:

$ ids:エンティティIDの配列、またはすべてのエンティティをロードする場合はFALSE。

0
kenorb