我有一个数组,用户按分数排序。 我只想输出特定的用户分数(在输出列表的中间),以及用户之前和之后的列表最大长度为10。
喜欢这个
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 :(得分:0)
$new_list = array_slice($array, 3, 10);
答案 1 :(得分: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);
它在数组中获取你的名字的id,并从你的rank-4中将数组切成大小为10.如果你的等级小于4,则取代0(它是max
部分)。
答案 2 :(得分: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);
}
答案 3 :(得分:0)
$start_index =array_search("D",$your_array);
for($i=$start_index; $i<count(your_array) && $i<10; $i++)
echo($your_array[$i])