2012-08-10 3 views
1

정수가 1부터 일부 값까지 정렬하는 데 문제가 있습니다. 정렬은 1과 일부 값 사이의 선택된 정수를 기반으로합니다.PHP는 선택된 정수를 기준으로 정수를 정렬합니다.

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의 변수가 필요하다고 생각하지만 머리가 어떻게 될지에 대해 생각하기 시작하고있다. 생각? 내가 바로 당신이 가지고있는 경우

+0

해결 방법 : 평소와 같이 배열을 정렬 한 다음 첫 번째 부분을 배열 끝으로 이동하려면 spliced, $ SELECT_value –

+1

에서 정수를 정렬하거나 $ selected_value에서 $ count까지 모든 정수를 오름차순으로 표시하고 싶습니다. 1부터 $ count-1까지 오름차순으로? –

+0

@MarcB는 해결 방법을 설명하기 위해 몇 가지 코드를 공유 할 수 있습니까? –

답변

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)); 
} 

을이 당신을 가정 당신의 예에서와 같이 값을 정렬 할하고있다 배열을 정렬하고 싶지 않습니다 (하나를 전달하지 않았고 하나도 언급하지 않았으므로).

범위는 이미 정렬되어, 당신은 단지 그것을 분할 및 역방향
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); 
} 
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.","; 
    } 
} 

아, 끝에 여분의 쉼표가 남을 수 있습니다 ..