2013-07-26 97 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