배열을 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에 넣은것은요?
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 = "파일을 읽을 수 없습니다.";
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
*/