2xadult + 2xchild kombinasyonları num hesaplayın

3 Cevap php
  • Bir bilet site "aile" bilet üzerinde bir indirim sunuyor.
  • Bir aile bileti 2 yetişkin, 2 çocuk.
  • satmak biletleri sayfa bir kullanıcı yetişkin ve çocuk bilet herhangi bir sayı girmek için izin verir.

How do I work out how to apply the family ticket discount, then charge all remaining tickets at their relevant cost (i.e. adult tickets cost more than child tickets) ?

İşte ben bugüne kadar (iş gibi görünüyor, ama bu konuda değil% 100 emin (php)) ne var

# Work out how many pairs of people there are
$numAdultPairs = floor($oForm->adult / 2);
$numChildPairs = floor($oForm->child / 2);

# work out the number of matching pairs for child / adult
if ( $numAdultPairs > $numChildPairs ) {
    $numberOfFamilyTickets = $numAdultPairs - $numChildPairs;
} else if ( $numAdultPairs < $numChildPairs ){
    $numberOfFamilyTickets = $numChildPairs - $numAdultPairs;
} else if ( $numAdultPairs == $numChildPairs ) {
    $numberOfFamilyTickets = $numAdultPairs;
}

# work out the remaining tickets required
$remainingAdult = $oForm->adult % 2;
$remainingChild = $oForm->child % 2;

3 Cevap

Ben senin yaklaşım aslında çalıştığını sanmıyorum. Eğer 6 yetişkin ve 4 çocuk olduğunu varsayalım. Bu durumda ilk if doğru olacağını ve 3 - 2 = 1 aile bileti ile sona erecekti. Doğru sonuç olsa da, iki aile bilet ve iki yetişkin bilet olacaktır.

Aile bilet miktarını belirlemek için çiftleri düşük sayısını istiyorum. Böyle bir şey deneyin:

$numberOfFamilyTickets = min($numAdultPairs, $numChildPairs);
$remainingAdult = $oForm->adult - 2 * $numberOfFamilyTickets;
$remainingChild = $oForm->child - 2 * $numberOfFamilyTickets;

Emin $oForm->adult ve $oForm->child non-negatif emin olun varsayarsak.

Bu çizgilerin (yalancı) boyunca bir şey:

adultPairs = totalAdults / 2
childPairs = totalChildren / 2

familyPairs = min(adiltPairs, childPairs)
adults = totalAdults - familyPairs * 2
children = totalChildren - familyPairs * 2

Belki de böyle bir şey ..

minfamilies = min(NumberOfAdults , NumberOfChildren)/2
RemaningAdults = NumberOfAdults - (minfamilies * 2)
RemainingChildren = NumberOfChildren - (minfamilies * 2)

EDIT: Yedek comment. D: Yukarıdaki iki yorum da haklı idi, ben sadece atladı