2011-05-12 2 views
1

이것은 루트 디렉토리에있는 index.php 본문에 있으며 localhost/sound/에는 무작위로 명명 된 mp3 파일이 포함되어 있습니다.디렉토리에서 random mp3를 가져올 때 blank array_rand()

$files = glob("/sound/*.mp3"); 
if (count($files) < 1) 
    die('No files found'); 
$random = $files[array_rand($files)]; 

... 

당신은 같은 일을 할 수 있지만, 제공 : 내가 브라우저에서 페이지의 소스를 볼 때

<?php 
$files = glob("/sound/*.mp3"); 
$random = array_rand($files) 
?> 
<embed src="<?php echo $random ?>" 
width="140" height="40" autostart="true" loop="TRUE"> 
</embed> 

<embed src="" 
width="140" height="40" autostart="true" loop="TRUE"> 
</embed> 

답변

2

glob 것을 실제로 일치를 반환 확인 표시 대체 기본값 :

$files = glob("/sound/*.mp3"); 
$random = count($files) > 1 ? $files[array_rand($files)] : 'path/to/default.mp3'; 

... 
+0

사실, 업데이트 된 코드 –

+0

아무것도 변경하지 않는 것, 나는 같은 디렉토리에있는 mp3를 사용하여 시도 PHP 파일 그래서 나는 'default.mp3'을 사용할 수 있습니다; 하지만 여전히 아무것도 나타나지 않고 열람 된 출처는 동일합니다 ... 무슨 일이 벌어지고 있습니까? O.o – John

+0

'$ files'에'var_dump'를 실행합니다. 어떻게 보입니까? –

2

먼저 실제로 파일 이름을 다시 가져 왔는지 확인하십시오. glob()은 파일 시스템상의 경로를 기대합니다. /sound/*.mp3 경로는 sound/*.mp3 (PHP 스크립트와 관련된) 또는 /var/www/html/sound/*.mp3 (웹 파일이 저장된 경로의 절대 경로)과 같아야합니다.

파일을 다시 가져 오는 지 확인하려면 코드를 체크해야합니다. 예를 들어 :

if ($files === FALSE || count($files) == 0) 
{ 
    die('No MP3s!'); 
} 

둘째, array_rand() 임의 배열의 키를 반환합니다. 당신은 배열의 키가 해당 값 검색하는 것을 찾아해야합니다 : 불행하게도

<embed src="<?php echo $files[$random] ?>" 
+0

조언을 주셔서 감사합니다 다시 경로를, 내가 거기에/PHP 파일에 상대적입니다 (하지만 절대 경로를 모르는 서버에서 호스팅 - 나는 그것이 centos 가상 서버라고 생각 제거 URL을 사용할 수 있습니까?) 나는 두 가지 제안을 모두 시도했지만 최종 결과는 항상 동일합니다. 아무 것도 발견되지 않으면 페이지에 아무런 MP3도 인쇄되어서는 안됩니다. 는 똑같은... – John