2012-01-24 5 views
-2

나는 시간당 한 번 10 시간 동안 계산 된 27 개의 영역을 가지고 있습니다. 내 배열은 각 행의 모든 ​​영역에 대해 동일한 개수를 반복해서 유지하며 그 영역에 특정한 개수를 출력해야 할 경우 # 다음 행으로 이동합니다. 그것은 내 SQL 쿼리 또는 내 PHP 루프 또는 둘 다 확실하지 않은 경우.배열이 가로로 반복됩니다.

array repeating image http://slographicarts.com/wp-content/uploads/2012/01/arrays_repeating.jpg

<?php 
    echo '<tr>'; 
    echo '<td class="tableTdContent">Areas</td>'; 
    echo '<td class="tableTdContent">Area ID</td>'; 
    foreach($rhh as $hr) 
    { 
    echo '<td class="tableTdContent">'. ($hr['fac_reports']['hour']).'</td>'; 
    } 
    echo '</tr>'; 
    $j=0; 
    foreach($raa as $all) 
{ 
echo '<tr>'; 
echo '<td class="tableTdContent">'. strip_tags($all['fac_reports']['areaname']).'</td>'; 
echo '<td class="tableTdContent">' . $j . '</td>'; 
for ($i = 0; $i < count($hr); $i++) 
{ 
foreach ($coo as $count) 
    { 
    echo '<td class="tableTdContent">'.$count['fac_reports']['count'].'</td>'; 
    } 

} 
echo '</tr>'; 
$j++} 

?> 

sql and array http://slographicarts.com/wp-content/uploads/2012/01/array_sql.jpg

+0

무엇이'$ hr'입니까? '$ coo '란 무엇입니까? 왜 2 차원 테이블에 대해 * 3 * 루프가 있습니까? 왜 당신은 외부 *와 * 내부 루프에서'$ all '을 사용하고 있습니까? 귀하의 배열은 어떻게 생겼습니까? 나는 너 자신이 혼란을 디버깅하려고 시도해야한다고 생각한다. – deceze

+1

그 이미지가 내 눈을 어지럽히고 있습니다. –

+0

루프를 자체 메서드로 분해하고 더 많은 설명 변수 이름을 사용하면 디버깅이 훨씬 쉬워 질 것이라고 생각합니다. 이 스크립트를 보면서 함수의 의도가 무엇인지를 판별하는 것은 매우 어렵습니다. 내가 수집 할 수있는 것으로부터 SQL 질의의 결과를 단순한 2 차원 배열로 평면화 한 다음이를 반복하여 HTML을 생성하는 것이 도움이 될 것이라고 생각합니다. – eli

답변

1

은 여전히 ​​계속하기에 충분한 정보가 없다, 그러나 나는 당신의 문제는 이중 내부 루프 매우 긍정적이다 :

foreach (...) { 
    for (...) { 
     foreach (...) { 
      ... 
     } 
    } 
} 

에만 필요 그 중 하나는 내부 루프.


그렇다면 주요 문제는 배열 형식이 매우 반복하기 어렵다는 것입니다.

<?php 

$groupedByArea = array(); 
foreach ($coo as $row) { 
    extract($row['fac_reports']); 
    $groupedByArea[$area][$hour] = $count; 
} 

?> 
<table> 
    <!-- table headers --> 
    <tr> 
     <th>Area</th> 
     <?php foreach (array_keys(current($groupedByArea)) as $hour) : ?> 
      <th><?php echo $hour; ?></th> 
     <?php endforeach; ?> 
    </tr> 

    <!-- data rows --> 
    <?php foreach ($groupedByArea as $area => $counts) : ?> 
     <tr> 
      <th><?php echo $area; ?></th> 
      <?php foreach ($counts as $count) : ?> 
       <td><?php echo $count; ?></td> 
      <?php endforeach; ?> 
     </tr> 
    <?php endforeach; ?> 
</table> 

(. 테스트되지 않은,하지만 난 당신이 아이디어를 얻을 희망)
이 시간에 따라 달라집니다 않습니다 정렬되고 : 여기 당신은 쉽게 통해 루프 전체 테이블을 출력 할 수있는 무언가에 배열을 포맷하는 방법이다 검색된 모든 행에서 동일하게, 그렇지 않으면 출력이 실제 데이터와 일치하지 않습니다.

+0

내부 루프 (foreach $ coo를 $ count로 사용)를 제거하고 $ count [ 'fac_reports'] [ 'count']를 $ all [ 'fac_reports'] [ 'count']로 간단히 변경하면 270 번 반복됩니다 . 그래서 나는 1 행 대신에 각 영역마다 10 개의 행을 가지고 있습니다. 저를 믿으십시오 나는 나가 그것을 배치한지 왜 많은 가능성을 시도했다. 협조 해 주셔서 감사합니다. – sloga

+0

확인을 누르면 업데이트 된 답변을 볼 수 있습니다. – deceze

+0

정말 멋지다! 감사. 이제는 오후까지 출력 할 시간이 필요합니다. – sloga

관련 문제