반응형
PHP for 문 100개씩 나눠서 서버 전송이나 기타 작업이 필요할 때 활용하기 위한 소스
개인적으로 코드 작업을 하면서 PHP 반복문 FOR 루프에서 반복되는 구문이 있었는데 for 루프가 배열 끝까지 반복되지 않고 100개씩만 루프가 돌면서 특정 서버에 데이터를 전송하는 코드가 필요했습니다.
직접 작성한 코드는 사이트에 이미 적용하였는데 혹시라도 필요한 분들이 있을 수도 있다는 생각에 샘플 코드를 간단히 작성했습니다.
코드의 흐름은 빈 배열 변수에 랜덤 숫자 437개를 넣고 while 반복문에서 100개를 나눈 개수만큼 루프가 돌며 while 문 내부에서 추가로 for 반복문이 반복되는 형태입니다.
개수 테스트가 필요하신 분들은 랜덤 숫자를 배열에 넣는 for 구문에서 437 숫자만 변경하셔서 테스트해 보시면 됩니다.
<?php
header('Content-Type: text/html; charset=UTF-8');//이건 인코딩 설정에 따라 한글 깨지면 EUC-KR로 바꺼서 사용하거나 아예 빼셔도 될것 같네요.
$randomarr = array(); //랜덤 숫자를 저장할 배열선언
for($i=0; $i<437; $i++){ //포문을 돌면서 1000부터 9999까지 랜덤 숫자를 randomarr 배열에 437개 넣음
$randomNum = mt_rand(1000, 9999);
array_push($randomarr, $randomNum);
}
$temp_count = count($randomarr) / 100; //몇번 while 문이 돌아야 하는지 확인 하기 위해 randomarr 총카운트에서 100을 나눔
$count = floor($temp_count); //정수만 추출해서 총 몇바퀴 돌아야할지 계산
if($count!=$temp_count){//100을 나눈뒤 정수로 정확히 안떨어지면 한바퀴 더돌아야 함.
$count++;
}
$roop_count=0;//전체 루프 변수 및 start end 값 초기화
$start = 0;
$end = 100;
while ( $roop_count < $count ) {//총몇번돌아야 하는지 확인후 while 내부 for문은 100개씩
if($roop_count==($count-1)){//루프를 돌면서 마지막 루프인 경우 100바퀴씩이 아닌 총 갯수만큼
$end = count($randomarr);
}
$for_count = 1;
for($number=$start; $number<$end; $number++){
echo(" [출력] - " . $randomarr[$number]);//루프를 돌면서 랜덤 배열에 있는 숫자를 100개씩 꺼냄
if($for_count%5==0){//5개씩 짤라서 보기좋게 하기 위해
echo("<br>");
}
$for_count++;
}
echo("<br><br>");//100개가 끝나는 지점이니 이곳에서 서버 전송이나 기타 필요한 코드를 넣으면 될 것 같습니다.
$roop_count++;//루프 증가 및 start end 값 100씩 증가
$start+=100;
$end+=100;
}
?>
출력 결과는 아래 이미지와 같이 출력되게 작성하였으며 예제 용도로 작성하다 보니 랜덤 숫자와 태그로 구분을 지어놓은 것 빼고는 제가 필요한 부분에서 코드를 적용하여 잘 사용하고 있습니다.
샘플 코드를 만든다고 만들었는데 개인적으로 단순하게 코드를 만들다 보니 좀 더 코드를 심플하게 만들 수 있을 거라는 생각도 들고 비슷한 구문이 다시 필요할 때 새롭게 코드를 만드는 것보다 빨리 코드를 적용해 필요한 부분에 활용하기 위해 정리한 것이기도 합니다.
반응형