我最近开始学习网络开发,目前正在开发一个网页,该网页读取文件夹中的多个音频文件,并让用户写下她/他所听到的内容的文字记录。我几天前开始,我设法通过 php 获取文件列表,并通过洗牌数组播放(让用户实际播放)随机文件(需要明确的是,每次加载页面时,都会准备好随机文件)被播放)。这似乎运作良好。
我还想添加按钮,让用户收听下一个/上一个文件,但是无论何时何地我编写 next($array)
行,它都不起作用,什么更糟糕的是,shuffle 功能也停止工作。我不知道这是否是因为我在标签中使用了 php,但我的直觉告诉我是这样。
我不知道我是否足够清楚,但我将不胜感激任何帮助。这是我的代码:
<html>
<head>
</head>
<body>
<p align="center">
<button><-</button>
<audio src="./Sound data/AAA2028C4_0.wav" type="audio/wav" align="center" id="RandomAudio" controls="controls">
</audio>
<button name="nextButton" onClick="next()">-></button>
</p>
<script language="JavaScript" type="text/javascript">
<?php
//Scan the sound data folder for files
$dir = './Sound data';
$files = scandir($dir);
$random_file = shuffle($files);
?>;
function load(){
var test = "./Sound data/<?php
//Select random element from files array
echo $files[$random_file];
?>";
//Play a random file
document.getElementById('RandomAudio').src=test;
}
function next(){
var next = "./Sound data/<?php
$next_file = next($random_file);
echo $files[$next_file];
?>";
//Play the next file
document.getElementById('RandomAudio').src=next;
}
window.onload = load;
</script>
<form method="post" action="testecho.php" align="center">
<strong><label>Transcript : </label></strong>
<br>
<textarea name ="transcript" rows="2" cols="40"> </textarea>
<input type="submit" />
</form>
</body>
</html>
最佳答案
对于您使用的每个功能,请查看手册。这有助于习惯它们。
让我们看一下:
$random_file = shuffle($files);
shuffle
函数返回 TRUE
或 FALSE
。因此,$random_file
变量仅提供数组 $files
是否已成功洗牌的信息。
echo $files[$random_file];
因此完全是假的。 $files
已被打乱且 $random_file
为 TRUE
或 FALSE
。但数组键是整数或字符串。
我很确定您知道如何解决这个问题。
与 next
类似:
$next_file = next($random_file);
echo $files[$next_file];
即使 $next_file
已经是下一个文件,如果 $random_file
是已打乱的 $files
数组(事实并非如此,请参阅上面),就不需要在下一行中使用它作为键:
echo $files[$next_file];
这没有任何意义。一步步编写代码。使用诸如 var_dump
之类的调试功能来显示发生的情况。仔细检查 PHP 手册以了解您当前正在使用的函数。然后逐行编写代码,您很快就准备好了,并且学到了很多东西。
不要盲目飞行。在每个函数调用之前和之后打印出来,并检查函数是否真正完成了您期望的操作。
关于javascript - PHP next($array) 和 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13110348/