2012-03-26 3 views
1

사용자 점수가 정렬 된 배열이 있습니다. 난 단지 특정 사용자 (출력 된리스트의 중간에) 점수, 그리고 이전과 이후 사용자가 방법이사용자 중심의 최상위 목록

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 

모든 아이디어와 마찬가지로 목록의 최대 길이를 10

를 만들기 위해 출력하고자 이것을하기 위해?

답변

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); 

그것은 10의 크기로 순위 4에서 배열과 조각의 배열을 당신의 이름의 id 소요 순위가 4보다 작 으면 0이 대신 적용됩니다 (max 부분).

+0

감사합니다, 이것은 내가 찾고 정확히입니다. –

+0

항상 도와 드리겠습니다! – SteeveDroz

0

이 같은 사용자 ID의 배열을 가지고 있다고 가정 : $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])