배열값 for문 질문입니다 !!

배열값 for문 질문입니다 !!

QA

배열값 for문 질문입니다 !!

답변 4

본문

 

arr배열안에

[0] => 1

[1] => 1

[2] => 1

...

[21] => 1

[22] => 1

...

[50] => 1

[51] => 1

0~60번까지 있단 가정하에

for문을 0~20까지돌리고, 

        21~40까지돌리고,. 요런식으로 조건을 줄수가있을까요?

이 질문에 댓글 쓰기 :

답변 4

* 개발자는 정확해야 해요. 0~20은 21개입니다.

+ array_chunk() 함수를 이용하면, 간편하게 원하는 개수만큼 묶어서 처리할 수 있습니다.

- https://www.php.net/manual/en/function.array-chunk.php

- http://docs.php.net/manual/kr/function.array-chunk.php


$data = array_chunk($arr, 20);
foreach ( $data as $key=>$group ) {
    // $key는 0, 1, 2, ...
    // $group은 20개씩 그룹지어진 배열
    foreach ( $group as $k=>$v ) {
        // $k는 0, 1, 2, ..., 18, 19
        // $v는 개별 값
    }
}
// 이 정도면 조건문을 추가해 첫 번째 그룹, 두 번째 그룹 등 그룹별로 동작을 다르게 할 수 있겠죠?
 
// 참고로 다른 방법도 남깁니다. 페이징 등 여러 곳에서 활용되는 방법이죠.
$group_no = 1; // 그룹 번호
$size = 20; // 개수
$offset = ($group_no-1)*$size; // 시작 위치
$limit = $offset + $size; // 끝 위치
for ($i=$offset; $i<$limit; $i++) {
    if ( !isset($arr[$i]) ) break; // 배열 없으면 벗어나기. 위에서 시작 위치, 끝 위치를 미리 제한해도 Good!
    // $arr[$i] 사용
}

function viewArr($arr, $start, $end) {
   for ($i=$start, $i <=$end; $i++) {
       echo $arr[$i];
   }
}
 
$arr = array( 60개의 값이 존재한다고 가정);
viewArr($arr, 0, 20);
viewArr($arr, 21,40);
viewArr($arr, 41,60);
 

참고로 알아두면 유용한 함수 소개합니다.
+ array_slice()
- https://www.php.net/manual/en/function.array-chunk.php
- http://docs.php.net/manual/kr/function.array-slice.php


echo implode(', ', array_slice($arr, 0, 20)), '<br>'; // 키 0~19까지의 배열값
echo implode(', ', array_slice($arr, 20, 20)), '<br>'; // 키 20~39까지의 배열값
echo implode(', ', array_slice($arr, 40, 20)), '<br>'; // 키 40~59까지의 배열값

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 1
© SIRSOFT
현재 페이지 제일 처음으로