2014-11-18 2 views
0

배열이 있습니다.
$ tab = [1, 2, 3, 4, 5, 6, 7, 8, 9];배열의 값으로 4 열 테이블 만들기

배열의 값이있는 테이블을 으로 만들고 싶습니다.
테이블은 최대 4 열이어야합니다.
그것은 다음과 같아야합니다 (작동하지 않는)

1 2 3 4 
5 6 7 8 
9 

내 예제 코드 :

$tab = [1, 2, 3, 4, 5, 6, 7, 8, 9]; 
$max = count($tab); 

// 1 FOR - ROWS 
echo "<table>"; 
    for ($i = 0; $i < $max; $i+=4) 
    { 
    echo "<tr>"; 
     // 2 FOR - COLUMNS 
     for ($x = $i; $x < 4; $x++) //our array is 9-elemented, in third row $x going to be out of index 
     { 
      printf('<td>%s</td>', $tab[$x]); 
     } 
    echo "</tr>"; 
    } 
echo "</table>"; 

답변

1
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; 
$chunks = array_chunk($arr, 4); 
echo '<table>'; 
foreach ($chunks as $chunk) { 
    echo '<tr>'; 
    foreach ($chunk as $val) { 
     printf('<td>%s</td>', $val); 
    } 
    echo '</tr>'; 
} 
echo '</table>'; 
+0

이 array_chunk''에 대해 완전히 잊어 버렸합니다. 좋아, 나는 공식적으로 PHP에서 녹슨거야. – silentw

+0

'array_chunk' 코드가 더 예쁘지 만 천천히, 그래서'mod' 연산자가 완전히 정확하고'foreach'가'for'보다 좋습니다.) – cetver

+1

해결책이 쉽지는 않을 것이라고 생각합니다. . 그게 내가 원하는거야. 정말 고마워! – exexe

1
$tab = array(1, 2, 3, 4, 5, 6, 7, 8, 9); 
$max = count($tab); 

echo "<table>"; 
    echo "<tr>"; 
    for ($i = 0; $i < $max; $i++) { 
     if ($i > 0 && $i % 4 == 0) { 
      echo "</tr><tr>"; 
     } 
     printf('<td>%s</td>', $tab[$i]); 
    } 
    echo "</tr>"; 
echo "</table>"; 
2
<?php 
    $tab = [1, 2, 3, 4, 5, 6, 7, 8, 9]; 
    $i=1; 
    echo '<table>' 
    foreach($tab as $key => $val){ 
     if ($i==1) echo '<tr>' 
     if($i%4==0){ $i=0; echo "<td>$val</td> </tr>";} 
     else { 
      echo "<td> $val </td>"; 
     } 
     $i++ 
    } 
    echo '</table>' 
?> 
1
$tab = [1, 2, 3, 4, 5, 6, 7, 8, 9]; 
$max = count($tab); 
echo "<table>"; 
    for($i=0;$i<$max;$i=$i+4){ 
     echo '<tr>'; 
      for($x=0;$x<4;$x++){ 
       if($x+$i>=$max){ 
        continue; 
       }else{ 
        echo '<td>'.$tab[($x+$i)].'</td>'; 
       } 
      } 
     echo '</tr>'; 
    } 
echo "</table>"; 
관련 문제