getMembershipBindings() as $binding) { $program_id = intval($binding['program_id'] ?? 0); $discount = floatval($binding['discount'] ?? 0.0); $field = strval($binding['field'] ?? ''); if ($program_id <= 0 || $field === '') { continue; } $raw = $data->getValue($field, ''); $value = is_scalar($raw) ? trim((string) $raw) : ''; if ($value === '') { continue; } if ($repo->key_exists($program_id, $value)) { $matched_discounts[] = $discount; } } if (empty($matched_discounts)) { return 0.0; } if ($def->getMembershipCombine() === 'sum') { return min(100.0, array_sum($matched_discounts)); } return max($matched_discounts); } }