从2(大)数字之间的范围获得N个数字的最佳方法

时间:2011-10-31 11:25:56

标签: php numbers range

你好我需要从两个大数字之间得到N个数字,没有开始和结束数字。 (N)数字必须是相等的间隔......我将尝试用小数字来解释:

<?php
$rangeStart = 0;
$rangeEnd = 100;
$n = 9;

在这个例子中,我需要获得10,20,30,40,50,60,70,80,90

我试过'for loop'但是它很慢,因为我使用的范围很像1207083600~1275512399

非常感谢您的帮助。

=====

这就是我所说的慢http://jsfiddle.net/pbF7N/1/ 开始和结束都是时间戳,我需要提取10个日期......

3 个答案:

答案 0 :(得分:8)

range()及其可选的第3个参数,用于指定步长...

range(10, 90, 10);

$range = range(10, 90, 10);
print_r($range);
Array
(
    [0] => 10
    [1] => 20
    [2] => 30
    [3] => 40
    [4] => 50
    [5] => 60
    [6] => 70
    [7] => 80
    [8] => 90
)

答案 1 :(得分:2)

这样的事情可能是:

function nrange($num, $start, $end)
{
        $out = array(); $i = 0;
        $interval = floor(($end - $start) / ($num + 1));
        while ($i++ < $num )
                $out[] = $start + $i * $interval;

        return $out;
}

答案 2 :(得分:1)

首先考虑您的示例案例。您的号码将[0..100)范围分成10个相等的间隔,[0..10)[10, 20)等等,直到[90..100)

请注意,间隔数为$n+1。因此,您会看到每个间隔的长度为($rangeEnd - $rangeStart) / $n

使用此信息,您可以使用range一次跨越$interval个号码,即

$interval = ($rangeEnd - $rangeStart) / $n;
$range = range($rangeStart, $rangeEnd, $interval);