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에서 합계를 계산할 수 있습니까?
그게 완벽하게 사용하여 각 패키지의 속성에 액세스 할 수 있습니다,하지만, 감사합니다! – Collins
그래서 numPackages가 행의 수를 제한합니까? 예를 들어 아무도 100 개 이상의 패키지를 주문할 수 있다고 가정하지 않고 100으로 설정할 수 있습니다. – Collins
Well $ numPackages는 for 루프가 반복해야하는 횟수를 나타냅니다. $ packages100이 없으면 오류가 발생합니다. 이 코드는 얼마나 많은 $ package 변수가 있는지를 미리 알고 있다고 가정합니다. – iyop45