我正在编写用于自动竞标项目的脚本。我认为描述我正在尝试做的事情的最简单方法是给你一个场景。假设 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。这是我想到的循环:
  • 插入新投标
  • 开始循环
  • $high = 从出价表中获取当前最高出价
  • $next = 获得最低的 maxbid 其中 maxbid > $high from maxbids
  • if ($next >= ($high + increment)
  • 插入投标
  • else//假设已经有最高出价
  • 中断循环
  • 结束循环

  • 这会起作用,但正如我所说,这将继续插入所有 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/

    10-11 07:02