0
実体参照フィールドの価格項目に基づいて値を計算しようとしています。Drupalで配列されたアイテムのそれぞれのPHP
私は現在
がif (isset($entity->field_choose_a_package['und'][0]['target_id'])) {
$package1nid = $entity->field_choose_a_package['und'][0]['target_id'];
$package1 = node_load($package1nid);
$package1price = $package1->field_price['und'][0]['value'];
} else {
$package1price = 0;
}
if (isset($entity->field_choose_a_package['und'][1]['target_id'])) {
$package2nid = $entity->field_choose_a_package['und'][1]['target_id'];
$package2 = node_load($package2nid);
$package2price = $package2->field_price['und'][0]['value'];
} else {
$package2price = 0;
}
if (isset($entity->field_choose_a_package['und'][2]['target_id'])) {
$package3nid = $entity->field_choose_a_package['und'][2]['target_id'];
$package3 = node_load($package3nid);
$package3price = $package3->field_price['und'][0]['value'];
} else {
$package3price = 0;
}
$packagestotal = $package1price + $package2price + $package3price;
$entity_field[0]['value'] = $packagestotal;
ただし、追加パッケージの無制限の量があるかもしれない...働く、これを持って、そして20+パッケージは試してみて、私の拠点をカバーするために、むしろ私よりもコードを複製します、私は各ループのために行うことができる方法がなければならない。
私はこのような何か、
$arr = $entity->field_choose_a_package['und'];
foreach ($arr as &$value) {
if (isset($entity->field_choose_a_package['und'][$value]['target_id'])) {
$package1nid = $entity->field_choose_a_package['und'][$value]['target_id'];
$package1 = node_load($package1nid);
$package1price = $package1->field_price['und'][$value]['value'];
} else {
$package1price = 0;
}
}
unset($value);
を試してみましたが、私は、変数をインクリメントする方法を見つけ出す、あるいはする必要がある場合はカント? foreachから合計を計算することはできますか?
を使用して、各パッケージの属性にアクセスすることができvariable variablesを使用することをお勧めします! – Collins
numPackagesは行の量を制限しますか?たとえば、100人以上のパッケージを注文する(または買う余裕がない)人がいると安全に仮定するために、100に設定できますか? – Collins
よく$ numPackagesは、forループが何回反復するべきかを示しています。 $ packages100が存在しない場合、エラーがスローされます。このコードでは、$パッケージ変数の数を事前に知っていることを前提としています。 – iyop45