2011-11-28 2 views
0

텍스트 파일에서 데이터를 가져 와서 PHP 페이지에 임의의 이미지 세 개를 표시하는 PHP 스크립트를 사용하고 있습니다. 내가 가지고있는 문제는 3 개의 이미지가 항상 페이지에 표시되지 않는다는 것입니다./페이지를 새로 고침하여 새로운 임의의 이미지를 볼 때 때로는 단 하나의 이미지 만 표시되고 경우에 따라서는 2 개, 때로는 3 개만 표시됩니다. 3 개의 무작위 이미지를 항상 표시하고 싶습니다. 누구든지 세 가지 이미지가 항상 표시되도록 추가 할 수있는 아이디어가 있습니까? : SPHP 무작위 이미지 번호가 일치하지 않음

PHP :

<?php 
$random = "random.txt"; 
$fp = file($random); 
shuffle($fp); 
$keys = array_rand($fp, 3); 
for ($i = 0; $i < 3; $i++): 
$rl = $fp[$keys[$i]]; 
echo $rl; 
endfor; 
?> 

HTML :

<div class="imagecontainer"> 
<?php include('rotate.php') ?> 
</div> 
+1

이미지가 표시 될 때와 표시되지 않을 때의 논리가 있습니까? 특정 이미지가 표시되지 않습니까? 하나 이상의 이미지가 표시되지 않을 때 HTML 소스를 살펴 보았습니까? ps와 같은 상황에서는 foreach()를 사용하는 것이 더 쉬울 수도 있습니다(). – liquorvicar

+0

3 개의 임의 이미지가 각각 다르기를 바랄뿐입니다. 중복 된 이미지는 한 번에 표시되지 않습니다. 나는 단지 1/2 이미지 만 보여줄 때 html 소스를 체크 아웃했다. 단지 하나 또는 두 개의 이미지 만 인쇄된다고 보여 준다. ( – Jess

+0

"random.txt"의 내용은 무엇입니까? – Nick

답변

3

array_rand()는 파일 배열의 키와 값을 제공하지 않지만 다시 인덱스 그들은 제로. 배열에 0에서 4까지 5 개의 요소가 있다고 가정 해 봅시다. 그런 다음 임의의 키를 가져 오면 (0 => "img0", 2 => "img2", 4 => "img4") 배열이 생성 될 수 있습니다.

루프는 숫자 0에서 2까지의 색인에만 신경을 씁니다. 따라서 일부 이미지가 누락 된 경우가 있습니다.

for_each를 사용하여 $ keys 배열을 반복 해보십시오. 이것은 배열의 인덱스 번호를 무시해야합니다.