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


Best way to get N numbers from range betwen 2 (big) numbers

你好,我需要从2个大数字之间的范围获得N个数字,没有开始和结束数字。(N)个数必须间隔相等…我试着用小数字来解释:

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

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

我已经尝试了'for循环',但它非常慢,因为我使用的范围像1207083600 ~ 1275512399

感谢您的帮助。

= = = = =

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

range()可选的第三个参数指定步长…

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
)

可能是这样的:

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

首先考虑您的示例情况。您的数字将范围[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);