이 연산자는 배열의 출력 결과를 제어하는데 사용할 수 있습니다.

연산자 의 미 Ex.
Limit 출력 제한 연산자 array limit number
Take 출력 제한 연산자 array take number
Skip 건너 뛰기 연산자 array skip number
Offset 건너 뛰기 연산자 array offset number
To 범위 지정 연산자 number to number

limit, take 연산자는 출력을 제한하는 연산자로 최대 출력 수를 지정할 수 있습니다. 간단한 예제를 살펴 보도록 합시다.

<b:loop values='["Hello", "Habony", "PHP"] limit 2' var='item'>
<data:item/>
</b:loop>
<!--//
결과:
Hello Habony
//-->

이 경우 배열에는 3개의 값이 존재합니다. 우리는 limit 문을 이용해 2개의 값으로 제한하였기 때문에 hello 와 habony 만 출력합니다.

데이터가 포함된 게시물도 동일하게 동작합니다. 아래 코드 결과는 처음 두 개의 게시물 제목만 출력하고 나머지는 무시됩니다.

<b:loop values='data:posts limit 2' var='item'>
  <data:post.title/><br/>
</b:loop>

offset 과 skip 연산자는 주어진 수만큼 건너뛰기를 출력합니다.

<b:loop values='["Hello", "Habony", "PHP"] offset 2' var='item'>
<data:item/>
</b:loop>
<!--//
결과:
PHP
//-->

연산자 limit 와는 반대로 주어진 수만큼 건너뛰기 한 다음부터 출력합니다. 그러므로 위 코드는 주어진 배열 중에서 두 개를 건너뛰므로 “PHP”만 출력하게 됩니다.

to 연산자는 범위 지정 연산자로 사용할 수 있습니다. 예를 들어 x 에서 y 까지 배열을 만들어 출력합니다.

<b:loop values='2 to 9' var='item'>
<data:item/>&amp;nbsp;
</b:loop>
<!--//
결과:
2 3 4 5 6 7 8 9
//-->

이 경우 2 와 9 사이의 범위를 지정하였기 때문에 출력되는 수는 2 부터 9 사이의 수를 반환합니다. 하지만 게시물을 포함한 배열은 직접적으로 가져올 수 없으므로 최근글 중 3, 4, 5 인 게시물만 가져오려면 아래와 같이 <b:loop>를 하나 더 만들어 해결할 수 있습니다.

<b:loop values='2 to 4' var='range'>
<b:loop index='num' values='data:posts' var='post'>
  <b:if cond='data:num == data:range'>
    <data:post.title/><br/>
  </b:if>
</b:loop>
</b:loop>

우리는 3, 4, 5 인 게시물을 가져오기 위해 범위를 지정하였는데, <b:loop> 인덱스 번호는 0부터 시작하므로 <2 to 4>로 범위를 지정하였습니다. 

첫 번째 루프는 2, 3, 4 를 만들고 두 번째 루프에서 “num”이라는 인덱스 변수를 만들었습니다. num 변수에는 0부터 시작하여 증가 값을 저장하게 됩니다. 그 다음 조건식을 이용해 num 변수와 range 변수의 값과 일치하는 수이면 게시물 제목을 출력하는 식입니다.

예를 들어 현재 루프에 총 7개의 게시물이 있다고 가정해 봅시다. 7개의 게시물 번호는 0부터 6까지입니다. 우리는 2, 3, 4 의 배열을 만들어 게시물이 2~4에 해당하는 게시물을 출력하고, 나머지는 무시하게 됩니다.

0 댓글