2013-04-13 2 views
0

데이터베이스에서 가져와 동적으로 항목 테이블을 만드는 스크립트를 작성 중입니다. 루프를 사용하면 매번 변수가 증가합니다.PHP 반복문 - Heredoc을 사용하여 여러 번 변수에 쓰기

이 루프 다중 테이블을 생성하는 잘 작동한다 : 여기

동일한 결과 일례이다.

<?php 

$item=array("item1", "item2", "item3", "item4", "item5", "item6", "item7"); 
$i=0; 


while($i!=count($item)){ 
$galleryItem.=<<<HTML 
<table> 
<tr> 
<td>$item[$i]</td> 
</tr> 
</table> 
HTML; 
$i++; 
} 

echo $galleryItem; 
?> 

그러나이 루프는 작동하지 않습니다. 여러 행에있는 배열의 전체 출력을 사용하여 테이블에 두 개의 열을 만드는 것이 좋습니다.

<?php 

$item=array("item1", "item2", "item3", "item4", "item5", "item6", "item7"); 
$i=0; 

while($i!=count($item)){ 

$galleryItem.=<<<HTML 
<table> 
<tr> 
<td>$item[$i]</td> 


HTML; 

$i++; 

$galleryItem.=<<<HTML 


<td>$item[$i]</td> 
</tr> 
</table> 
$i++; 
} 

echo $galleryItem; 
?> 

내가 뭘 잘못하고 있니? PHP는 while 루프에서 한 번 이상 같은 변수에 쓸 수 없습니까?

+1

당신은 – Jon

+0

감사합니다 마지막 히어 닥을 닫지 마십시오 ,하지만 여전히 코드가 작동하지 않습니다 – user2276737

+0

또한 foreach 루프로이 작업을 수행 할 수 있습니다 –

답변

0

배열 요소가 부족합니다. 당신은 7 개의 아이템을 가지고 있지만 8 개의 엘리먼트를 에코하려고합니다. 적절한 경계 검사를 수행하여 요소를 사용할 충분한 요소가 있는지 확인해야합니다.

는 시작과 루프 동안 교체하기

while($i <= count($item)) { 
    ... 
} 

그러나 문제는 실제로 카운터 $i++ 증가 하나가 실제로 존재하는지 확인하지 않고 다른 요소를 메아리에 의해 발생합니다. 빠른 수정 :

<td><?php echo ($i <=count($item)) ? $item[$i] : ''; ?></td> 

UPDATE : 당신이 히어 닥없이 일반 PHP에서 할 수있는 방법의 예를 추가했습니다 :

<?php 

    $item = array("item1", "item2", "item3", "item4", "item5", "item6", "item7"); 
    $i=0; 

?><table> 
<?php while($i <= count($item)): ?> 
    <?php if (($i % 2) == 0): ?><tr><?php endif ?> 
     <td><?php echo ($i < count($item)) ? $item[$i] : ''; ?></td> 
    <?php if (($i % 2) == 1): ?></tr><?php endif ?> 
<?php $i++; endwhile; ?> 
</table> 
+0

도움을 주셔서 감사합니다, 나는 반드시 삼항 연산자가 필요하지 않았지만 조건을 <= 대신! = 트릭을 변경했습니다. 왜 그런가? – user2276737

+0

실제로'$ i

관련 문제