我已经有代码遍历我的网站的每个成员并且可以检索特定变量(在这种情况下它是$ duration)。
我要做的是找到具有10个最低持续时间的人,并将它们放入有序数组或列表中,然后循环遍历10和echo
它。< / p>
作为一个用例,让我们假装100个成员,10个人持续时间 10,20,30,40等...,我们将假装其他90个成员拥有持续时间介于101-1000之间。
当我遍历每个成员时,我想看看该成员的持续时间值是否低于某个容器(数组?)中已有的10个中的任何一个,并且最后能够从最低到最高,从echo
出10。
答案 0 :(得分:1)
在键盘中查看此示例:http://codepad.org/4ROaojCT
<?php
$array = array(5, 6, 1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13);
sort($array);
$array = array_slice($array, 0, 10);
print_r($array);
结果:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
[9] => 10
)
答案 1 :(得分:0)
由于您必须遍历每个值,只需将所有值添加到数组中,然后使用sort
方法并获取前十项(0-9)。以下是有关如何使用此方法的文档:
http://www.php.net/manual/en/function.sort.php
此解决方案的好处是它将重新排序值,以便键0对应于最低值。它还可以选择更改您正在进行的比较类型(文本,数字等)
每次找到新值时都可以尝试排序(插入新值并删除最高值)。这样可以节省阵列的内存存储量,但是当你对每个值进行比较时,它会耗费你的处理能力。即使进行优化,它也可能不够好。
如果你真的不想把数组中的每个项目放在一起,你可以创建一个包含50个成员的数组(或者你想要使用的任何幻数)。您可以使用前50个持续时间填充它,然后对其进行排序。然后你可以再添加40个项目到阵列位置10-49并再次排序。您可以反复重复,每次添加新的持续时间时保留最低的十项。这样你就可以平衡每个项目的排序性能与存储每个项目的内存命中。您可以通过更改阵列大小来拨入。
答案 2 :(得分:0)
将您网站的所有成员存储在哈希中,其中密钥为持续时间,值为主键,甚至包含成员详细信息的对象。编写一个可以提供给uksort的函数,它将根据键对哈希进行排序。反转并打印前10名。