我正在编写用于自动竞标项目的脚本。我认为描述我正在尝试做的事情的最简单方法是给你一个场景。假设 1,000 美元的增量:
Asking Price: $1,000
Bidder 1: Max Bid of $4,000 -> High Bid: $1,000
Bidder 2: Max Bid of $3,000 -> High Bid: $3,000 -> [AUTO BIDDER 1] High Bid: $4,000
Bidder 3: Max Bid of $8,000 -> High Bid: $5,000
Bidder 4: Max Bid of $10,000 -> [AUTO BIDDER 3] High Bid: $8,000 -> High Bid: $9,000
我试图想出一个循环来遍历它们,但我不确定如何。我想出了一个循环,它适用于每个出价,但我想跳过每增加 1,000 美元的步骤,而是根据最高出价提高最高出价。
我有两个表设置:bids 和 maxbids。这是我想到的循环:
这会起作用,但正如我所说,这将继续插入所有 1,000 美元的增量。我宁愿它按照我上面显示的方式工作。有什么建议么?
最佳答案
我认为您可以使用条件树,而不是循环
这是一个有趣的问题,根据我的理解,每当进行新的出价时,此功能都会触发。你想要做的应该是这样的:
下一个:
/**
* $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
关于PHP/MySQL 自动投标系统,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18135562/