繁体   English   中英

以用户为中心的顶部列表

[英]User centered top list

我有一个按分数排序的用户数组。 我只想输出特定的用户分数(在输出列表的中间),并且使列表之前和之后的用户最大长度为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

有关如何执行此操作的任何想法? 提前致谢

参见array_slice()

$new_list = array_slice($array, 3, 10);

试试看:

$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,并从等级4中将数组切片,大小为10。如果等级小于4,则取0(这是max部分)。

假设您有一个这样的用户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);
}
$start_index =array_search("D",$your_array);
for($i=$start_index; $i<count(your_array) && $i<10; $i++)
       echo($your_array[$i])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM