2012-01-19 5 views
1

У меня есть массив, который уже отсортирован, но я хочу присвоить рейтинг каждой строке. Если есть соответствующие значения, то он пропустит ранг, как 1,2,2,4,5,5,5,8.Значения рангов в многомерном массиве

Его можно было бы сортировать по любым столбцам, но в приведенном ниже примере он сортируется по a и b. Ранг ниже будет 1,1,3 в виде массивов 0 и 1.

Пример массива

Array 
(
    [0] => Array 
    (
     [rank] => 
     [a] => 5 
     [b] => 4 
     [c] => 1 
    ) 

[1] => Array 
    (
     [rank] => 
     [a] => 5 
     [b] => 4 
     [c] => 9 
    ) 

[2] => Array 
    (
     [rank] => 
     [a] => 3 
     [b] => 25 
     [c] => 9 
    ) 
) 
+1

Как вычислить ранг? –

ответ

0

Где $arr ваш массив:

$prev = null; 

$length = count($arr); 
for($i = 0; $i < $length; $i++) 
{ 
    $sub_arr = array_slice($arr[$i], 1, 2); // keeps array('a' => , 'b' =>) 
    if($prev == null || $sub_arr == $prev) 
    { 
     $arr[$i]['rank'] = $i == 0 ? 1 : $arr[$i - 1]['rank']; 
    } 
    else 
    { 
     $arr[$i]['rank'] = $i + 1; 
    } 
    $prev = $sub_arr; 
} 
+0

спасибо, хорошо работает – Matt

Смежные вопросы