2013-07-26 60 views
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]应该得到的"points" => 40

$trainergross[1]一个key => value会得到38。[2]将得到36 ...等等

我会然后usort由芽阵列,然后再次增加基于最高芽的值键。

我的问题是,我甚至不知道从哪里开始做这件事。是否可以添加一个基于数组顺序的密钥?

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

对不起模糊,甚至不知道如何问,希望这解释得很好。

+0

你怎么生成积分值? – Maximus2012

+2

首先告诉我们为什么0得到40分,1得到38 – Prix

+0

@prix theres没有理由。它只是点系统。你在第一名(0)中获得40分。之后的每个人得到2少 – robz228

回答

2

如果阵列已经排序,那么你可以使用这样的事情:

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

如果要根据他们在另一个标准位置添加多个点,则下一个属性对数组进行排序(即芽)并重复上面的操作,但增加到当前的积分值:

$trainer['points'] += $maxpoints; 
+1

也确保你的数组*真正*排序,PHP可以通过在数组的中间放置'[0] => {最高总数}'例如读取'usort '手册获取更多信息。 – kajacx

+0

yikes,是那么容易。感谢您的指导。我把我最终使用的底部 – robz228

+0

@kajacx我扔了我在问题上使用的功能,看起来不错吗?我在这个网站上发现了一些东西,并将其改为我的需求 – robz228