배열을 for문으로 출력하는데 잘 안됩니다..ㅠㅠ

배열을 for문으로 출력하는데 잘 안됩니다..ㅠㅠ

QA

배열을 for문으로 출력하는데 잘 안됩니다..ㅠㅠ

본문

text.txt파일에는

가,나,다,라,마,바,사,아,자,차,카,타,파,하,1,2,3,4,5,6,7,8,9,10,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
들어가있으며 지정된 숫자만큼 순차적으로 출력할려고 합니다
1. 가,나,다,라,마
2. 바,사,아,자,차
3. 카,타,파,하,1
4. 2.3.4.5.6
단순하게 print_r로 배열확인하니 잘 나와서 for문으로 할려는데 배열을 못가져옵니다 ㅠㅠ

<?php
    $text = @file("test.txt") or $result = "파일을 읽을 수 없습니다.";    
    if ($text  != null) {
        for($i = 0; $i < count($text); $i++){
            $cnt = 5;
            $arr = explode(",", $text[$i]);
            $arr1 = array_chunk($arr, $cnt);
            for($j = 0;$j < $cnt;$j++){
                $result .= $arr1[$j].",";
            }
        }
    }
?>

<p><?php echo $result; ?></p>


초보자에게 가르침좀 내려주십시오

이 질문에 댓글 쓰기 :

답변 5

현제 이렇게 해서 배열로 원하는 값만큼 출력되는데요
이걸 for문으로 바꿔서 사용하고 싶어서 질문을 올린겁니다

 

일단 이렇게 말씀하시니 답글이 많지만 수정한 코드를 적습니다.

 


<?php
    $text = @file("test.txt") or $result = "파일을 읽을 수 없습니다.";    
    if ($text  != null) {
        for($i = 0; $i < count($text); $i++){  // 현재 한줄이시므로 이런식의 카운터는 필요 없습니다.
            $cnt = 5;
            $arr = explode(",", $text[$i]);
            $arr1 = array_chunk($arr, $cnt);
            for($j = 0;$j < $cnt;$j++){
                $result .= $arr1[$j].",";
            }
        }
    }
?>
<p><?php echo $result; ?></p>

 

를 기준으로 아래와 같이 수정했습니다.

 


<?php
    $cnt = 5; // 분할갯수
    $text = @file("test.txt") or $result = "파일을 읽을 수 없습니다.";    
    if ($text  != null) {
        $arr = explode(",", $text[0]);  // 한줄을 , 으로 분할
        for($i = 0; $i < count($arr); $i++){
            if($i != 0 && ($i+1) % $cnt == 0){ // $i 가 0이 아니고, $cnt의 나머지가 0일 때
               // $i+1인 이유는 시작이 0부터 하기 때문 1부터 시작하면 1부터 하셔도 되며 코드가 달라짐
               $result .= "<br>".(( ($i+1) / $cnt) + 1).". "; // 다음줄 넘기기
            }else if($i == 0){
               $result .= "1. "; // 1 넣기
            }else{
               $result .= ","; // 콤마 추가
            }
            $result .= $arr[$i]; // 숫자 추가
        }
    }
?>
<p><?php echo $result; ?></p>

저걸 그냥 txt말고 array에 넣은것은요? 

 

아..배열 확인은
<?php
$text = @file("test.txt") or $result = "파일을 읽을 수 없습니다.";
$cnt = 5;
$arr = explode(',',$text [0]);
$arr1 = array_chunk($arr, $cnt);
print_r($arr1);
?>
이렇게 해서 확인했는데 배열로 잘 받아옵니다..

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

 

<?php
$input_array = array('a', 'b', 'c', 'd', 'e');
print_r(array_chunk($input_array, 2));

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
            [1] => d
        )

    [2] => Array
        (
            [0] => e
        )

)

<?php
$text = @file("test.txt") or $result = "파일을 읽을 수 없습니다.";
$cnt = 5;
$arr = explode(',',$text [0]);
$arr1 = array_chunk($arr, $cnt);
print_r($arr1);


현제 이렇게 해서 배열로 원하는 값만큼 출력되는데요

이걸 for문으로 바꿔서 사용하고 싶어서 질문을 올린겁니다

txt파일안에는

가,나,다,라,마,바,사,아,자,차,카,타,파,하,1,2,3,4,5,6,7,8,9,10,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z

이렇게 한줄로 들어가있습니다

주소남겨주신걸로 참고해서 해보겠습니다 감사합니다

<?php
    $text = @file("test.txt") or $result = "파일을 읽을 수 없습니다.";    
    if ($text  != null) {

            $cnt = 1;

            $size=5;
        for($i = 0; $i < count($text); $i++){
            if( $i % $size == 0) echo $cnt++,'. ';

            echo $text[ $i];

            if( $i % $size == 0 && $i) echo '<br />';

            else echo ',';
        }
    }
?>

<p><?php echo $result; ?></p>


<?php
// 파일의 내용을 읽어, 좌우 여백 제거 후 콤마 기준으로로 분리, 5개씩 나눠서 할당
$temp = array_chunk(explode(',', trim(file_get_contents('./test.txt'))), 5);
$result = ''; // 결과값 초기화
foreach ($temp as $key=>$values) $result.= ($key+1).'. '.implode(',', $values).'<br>'; // 번호 추가해 결합
echo $result;
/* 실행 결과
1. 가,나,다,라,마
2. 바,사,아,자,차
3. 카,타,파,하,1
4. 2,3,4,5,6
5. 7,8,9,10,a
6. b,c,d,e,f
7. g,h,i,j,k
8. l,m,n,o,p
9. q,r,s,t,u
10. v,w,x,y,z
*/
답변을 작성하시기 전에 로그인 해주세요.
전체 42
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT