2012-03-26 2 views
1

У меня есть массив с пользователями, отсортированными по количеству баллов. Я только хочу, чтобы вывести определенных пользователей счет (в середине выводимого списка), а пользователи до и после, чтобы длина списка Макс 10.User centered top list

как этот

1. A 
2. B 
3. C 
--------- OUTPUT START 
4. D 
5. E 
6. F 
7. G 
8. H (ME) 
9. I 
10. J 
11. K 
12. L 
13. M 
--------- OUTPUT END 
14. N 
15. O 
16. P 

Любые идеи о том, сделать это? Заранее спасибо

ответ

0

Попробуйте это:

$my_rank; 
foreach ($scores as $key => $value) { 
    if ($value == 'H') { // 'H' being your name. 
    $my_rank = $key; 
    } 
} 
$surroundings = array_slice($scores, max(0, $my_rank - 4), 10); 

Он принимает идентификатор вашего имени в массиве и ломтиков массив из вашего ранга-4 с размером 10 Если ваш ранг меньше 4, вместо этого он принимает 0 (это часть max).

+0

Спасибо, это именно то, что я ищу. –

+0

Всегда рад, что смогу помочь! – SteeveDroz

0

при условии, что у вас есть массив пользовательских идентификаторов, как это: $arr = [0]->7364,[1]->8742,[2]->9483... вы можете создать новый массив с помощью:

$sibling_array = []; //new array 
$myId //this user id 
$myPos = array_search($myId, $arr); //position of this user 

if ($myPos > 10) { // middle of list 
$sibling_array = array_slice($arr, $myPos-10, $myPos+10); 
} else { //close to top 
$sibling_array = array_slice($arr, 0, $myPos+10); 
} 
0
$start_index =array_search("D",$your_array); 
for($i=$start_index; $i<count(your_array) && $i<10; $i++) 
     echo($your_array[$i])