채택완료

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

arr배열안에

[0] => 1

[1] => 1

[2] => 1

...

[21] => 1

[22] => 1

...

[50] => 1

[51] => 1

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

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

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

|

답변 4개 / 댓글 1개

채택된 답변
+20 포인트
2020-07-27 (월) 19:06:40

* 개발자는 정확해야 해요. 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

Copy
$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] 사용
}
Copy
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);

답변에 대한 댓글 1개

참고로 알아두면 유용한 함수 소개합니다.
+ array_slice()
- https://www.php.net/manual/en/function.array-chunk.php
- http://docs.php.net/manual/kr/function.array-slice.php
[code]
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까지의 배열값
[/code]
2020-07-27 (월) 15:27:13

for ($i = 0; $i < 21; $i++) {

  echo $arr[$i];

}

for ($i = 21; $i < 41; $i++) {

  echo $arr[$i];

}

2020-07-27 (월) 15:04:15

for(i =0; i<배열의 길이; i++){

 if( i < 20){

 }else if (i<40 && i >= 20){

 }else if (i < 60 && i>= 60) {

 }

}

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