我需要一个像 range 这样的函数,我将在其中传递最小值和最大值,它将返回设置的系列。
例如
createSeries(0, 50, 10, ' - '); // (min, max, interval, connector)
应该返回我以下数组
array('0 - 10', '10 - 20', '20 - 30', '30 - 40', '40 - 50');
我能做到的最好的事情是什么?
编辑:我有一个函数可以给我结果。我使用了范围和 for 循环来获得我的结果。有没有更有效的方法可以得到它?
提前感谢!
时尚的功能代码:
function createSeries($min, $max, $interval, $connector) {
return array_map(
function ($num) use ($interval, $connector) {
return implode(' ', array($num, $connector, $num + $interval));
},
range($min, $max - $interval, $interval)
);
}
但是,最有效的方法似乎是:
function createSeries($min, $max, $interval, $connector) {
$series = array();
for ($i = $min; $i < $max; $i += $interval) {
$tail = $i + $interval;
$series[] = "$i $connector $tail";
}
return $series;
}
注意:PHP 是非常慢的脚本语言。你不应该非常介意效率。
function createSeries($s, $e, $st, $d) {
$result = array();
for($i = $s; $i < $e; $i += $st)
$result[] = $i . $d . ($i + $st);
return $result;
}