채택완료

배열 원소의 반복 질문 드립니다.

2020-04-05 (일) 09:27:50 1,533

$num = [1,2,3,4,5]

1, 2, 3, 4, 5

5, 1, 2, 3, 4

4, 5, 1, 2, 3

3, 4, 5, 1, 2

2, 1, 3, 4, 5

1, 2, 3, 4, 5

위 에서 처럼 

마지막 부분의 배열의 원소가 앞으로 와서 한 칸씩 밀려 가면서

1부터 5까지가 반복되는 방법 부탁드립니다.

|

답변 3개 / 댓글 1개

채택된 답변
+20 포인트

$num = [1,2,3,4,5];

for($i=0; $i < sizeof($num); $i++){
    $last_el = array_pop($num);
    array_unshift($num, $last_el);
    
    print_r($num);
}

답변에 대한 댓글 1개

어느 별에서 오셨어요? ㅎ

<?php
$num = [1,2,3,4,5];
print_r($num);
echo "<br>";

for($i=0; $i < sizeof($num); $i++){
$last_el = array_pop($num);
array_unshift($num, $last_el);

print_r($num);
echo "<br>";
}
2020-04-05 (일) 23:44:27

참고로 다른 방법도 소개합니다.

Copy
$num = [1,2,3,4,5];
for ($i=0, $cnt=count($num); $i<=$cnt; $i++) {
    for ($j=-$i; $j<$cnt-$i; $j++) {
        $p = ($cnt+$j)%$cnt;
        echo $num[$p], ' ';
    }
    echo '<br>';
}

1 2 3 4 5
5 1 2 3 4
4 5 1 2 3
3 4 5 1 2
2 3 4 5 1
1 2 3 4 5

답변 감사 드립니다.

보내 주신 답변을 바탕으로 아래 처럼 해결 하였습니다.

<?php
$num = [1,2,3,4,5];
$cnt = count($num);

for($i=0;$i<$cnt;$i++){
        for($j=0;$j<$cnt;$j++){
            echo $num[$j];
        }
        echo "<br>";
        $last_el = array_pop($num);
        array_unshift($num, $last_el);
}
?>

답변을 작성하려면 로그인이 필요합니다.