0

我用了什么:

        $maxpoints = 40;
        for($i = 0; $i < count($trainergross); $i++){
                $trainergross[$i]['points'] = $maxpoints;
                $maxpoints -=2;
        }

这是我的排序功能:

function grossSort($gross, $compare) {
    if($gross['gross'] > $compare['gross'])
        return -1; // move up
    else if($gross['gross'] < $compare['gross'])
        return 1; // move down
    else
        return 0; // do nothing
}

这很棘手(至少对我来说)。我需要生成一个基于最高值总降级 2 的积分系统。

这是我在运行一个函数后的数组,按最高总分 ( $trainergross) 对其进行排序:

Array
(
    [0] => Array
        (
            [instr] => blah
            [club] => Colvin
            [gross] => 2146
            [bud] => 0
            [ratio] => 0
        )

    [1] => Array
        (
            [instr] => rob
            [club] => Evans
            [gross] => 2000
            [bud] => 0
            [ratio] => 0
        )

    [2] => Array
        (
            [instr] => new
            [club] => Boulevard
            [gross] => 930
            [bud] => 755
            [ratio] => 248
        )

    [3] => Array
        (
            [instr] => test
            [club] => Boulevard
            [gross] => 805
            [bud] => 50
            [ratio] => 50
        )

    [4] => Array
        (
            [instr] => lee
            [club] => Boulevard
            [gross] => 235
            [bud] => 60
            [ratio] => 30
        )

    [5] => Array
        (
            [instr] => rob
            [club] => Boulevard
            [gross] => 175
            [bud] => 125
            [ratio] => 125
        )

    [6] => Array
        (
            [instr] => rob
            [club] => Henrietta
            [gross] => 60
            [bud] => 0
            [ratio] => 0
        )

)

在这个例子中$trainergross[0]应该得到key => value一个"points" => 40

$trainergross[1]会得到 38.. [2] 会得到 36... 等等。

然后我会按芽对数组进行排序,然后再次根据最高芽增加值键。

我的问题是,我什至不知道从哪里开始这样做。是否可以根据数组的顺序添加键?

我唯一的想法是做 3 个不同的数组,然后将它们全部合并,但这似乎非常低效。

抱歉含糊不清,甚至不知道如何问,希望这能很好地解释它。

4

1 回答 1

2

如果您的数组已经排序,那么您可以使用以下内容:

$maxpoints = 40;
foreach($trainergross as $trainer){
    $trainer['points'] = $maxpoints;
    $maxpoints -=2;
}

如果您想根据它们在另一个条件中的位置添加更多点,则对数组进行排序以获取下一个属性(即芽)并重复上述操作,但添加到点的当前值:

$trainer['points'] += $maxpoints;
于 2013-07-26T17:24:15.130 回答