我认为您可以使用条件树,而不是循环
这是一个有趣的问题,从我的理解来看,每当有新的出价时,这个功能就会触发。你想要做的应该是这样的:
- 存储用户尝试插入的出价。
- 获取当前投标人的最高出价(不应该有高于此的出价,因为它们会被此函数的先前迭代解决)。
下一个:
/**
* $currentBidder = The current high bidder
* $highBid = The current high bidder's high bid
* $thisBidder = Bidder placing the new bid
* $thisBid = The bid that triggered the function
* $increment = The minimum bid increment
*/
function placeBid($currentBidder,$highBid,$thisBidder,$thisBid,$increment) {
if($thisBid > $highBid) {
// Insert $highBid as current bid, for $currentBidder
if($thisBid > $highBid + $increment) {
// Insert $thisBid into highbids table
// Insert $highBid + $increment as current bid, for $thisBidder
} else {
// Insert $thisBid as current bid, for $thisBidder
}
} else {
// Insert $thisBid as current bid for $thisBidder
if($highBid > $thisBid + $increment) {
// Insert $thisBid + $increment as current bid, for $currentBidder
} else {
// Insert $thisBid as current bid, for $currentBidder
}
}
}
笔记:
- 如果新出价等于最高出价,我代表当前出价者优先于新出价者。
- 在所有情况下,我都倾向于最高出价,即使这不会高于当前的最高出价 + 增量。
显然,您必须检查它是否是第一个出价,如果是,请将出价设置为最低要价。您必须检查出价是否有效(大于当前出价+增量。我没有包含该代码。
据我所知,如果每次出价时都触发该函数,则根本不需要循环,只需要一个条件树。
设想:
Item Current Bids: A, 4000
Item Current Max: A, 4000
--> C bids 7500
Item Current Bids: A, 4000; C, 5000
Item Current Max: C, 7500
--> B bids 7500
Item Current Bids: A, 4000; C, 5000; B, 7500; C, 7500
Item Current Max: C, 7500
--> A bids 9000
Item Current Bids: A, 4000; C, 5000; B, 7000; C, 7500; A, 8500
Item Current Max: A, 9000