我在使用 PHP 对从 1 到某个值的整数进行排序时遇到了问题,其中排序基于值介于 1 和某个值之间的选定整数。
以下是我希望函数的外观:
function sort_integers($count, $selected_value){
....sort()...?
}
因此,如果$count=7
和你$selected_value=3
,那么sort_integers()
函数将返回以下内容:
3,4,5,6,7,1,2
如果$count=4
和你$selected_value=2
,那么sort_integers()
函数将返回以下内容:
2, 3, 4, 1
我想我需要一个递增的第 3 个变量,以便我可以进行比较,但我的头开始在思考如何做到这一点时感到疼痛。思潮?
如果我
做对了,我会这样做:
function sort_integers($count, $selected_value){
$res = array();
for($i = $selected_value; $i <= $count; ++$i)
$res[] = $i;
for($i = 1; $i < $selected_value; ++$i)
$res[] = $i;
return $res;
}
或使用内置函数:
function sort_integers($count, $selected_value){
return array_merge(range($selected_value, $count),
range(1, $selected_value - 1));
}
这假设您只想像示例中那样对齐值,并且没有要排序的给定数组(因为您没有传入一个数组,也没有提到一个数组)。
范围已经排序,您只需拆分它并反转部分:
$count = 7;
$selected = 3;
$range = range(1, $count);
if (--$selected)
{
$sort = array_splice($range, 0, $selected);
$sort = array_merge($range, $sort);
} else {
$sort = $range;
}
或者更直接:
function sort_integers($count = 7, $selected = 3) {
if (! $count = max(0, $count)) return array();
if (--$selected && $selected < $count) {
return array_merge(range($selected+1,$count), range(1, $selected));
}
return range(1, $count);
}
没有数组,这应该可以工作。
function sort_integers($count, $selected_value)
{
for($x = $selected_value; $x<=$count;$x++)
{
echo $x.",";
}
for($x=1; $x < $selected_value;$x++)
{
echo $x.",";
}
}
哦,最后可能会留下一个额外的逗号。