我在使用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
我想我需要一个增量的第三个变量,这样我可以进行比较,但是我的脑袋开始在思考如何做到这一点。想法?
答案 0 :(得分:5)
如果我找对你,我会这样做:
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));
}
这假设你只想对齐你的例子中的值,并且没有你想要排序的给定数组(因为你没有传入一个,也没有提到一个)。
答案 1 :(得分:2)
范围已经排序,您只需将其拆分并反转部分:
$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);
}
答案 2 :(得分:1)
没有数组,这应该有用..
function sort_integers($count, $selected_value)
{
for($x = $selected_value; $x<=$count;$x++)
{
echo $x.",";
}
for($x=1; $x < $selected_value;$x++)
{
echo $x.",";
}
}
哦,最后可能会留下额外的逗号..