我是 PHP 新手,目前正在这个网页上工作,该网页读取文件夹中的许多音频文件,并让用户编写关于她/他所听到内容的文字记录。目前我可以读取目录中的文件并打乱该数组。我还想实现两个按钮,让用户收听下一个/上一个文件。那就是我现在遇到问题的地方。下一个按钮似乎正在工作,但不是我想要的。问题是我只能移动指针一次。我的意思是我可以从第一个文件到第二个文件,我不能再前进了。这是用户单击按钮时调用的函数的代码: function nextelem(){
var nextElement = "./Sound data/<?php
$current_id = current($files);
$current_index = array_search($current_id, $files);
$next_index = $current_index+1;
echo $files[$next_index];
next($files);
?>";
//Play the next file
document.getElementById('RandomAudio').src=nextElement;
}
我猜问题是 current($array) 和 next($array) 函数是按值原则工作的,所以每次调用函数时,都会传递原始数组的副本,所以每次按钮单击我将第一个元素作为当前元素并使用 next($array) 移动指针并没有真正的效果。
所以我尝试编写自己的 current($array) 和 next($array) 函数:
<?php
function ¤t_by_ref(&$arr) {
return $arr[key($arr)];
}
function &next_by_ref(&$arr) {
return $arr[key($arr)+1];
}
?>;
但这些也无济于事。我真的很感激任何帮助或提示。这开始让我紧张了。(PS:我打开了一个关于(同一个项目但不是同一个问题)的主题,这真的很有帮助。链接在这里PHP next($array) 和 Javascript。我在那里发布了所有代码,它不是最后一个我现在正在处理的版本,但它可以让你对我认为的页面有更多的了解。所以还是谢谢)
根据氟利昂的回答,我将代码更改为:
session_start();
$dir = './Sound data';
$files = scandir($dir);
$norp = $_GET['name'];
$current_id = current($files);
$current_index = array_search($current_id, $files);
$_SESSION['current'] = $current_index;
$_SESSION['songlist'] = $files;
$current_song = $_SESSION['current']; //index in songlist for your song
$songlist = $_SESSION['songlist']; //this session var has your $files array
if($norp == 'nextS'){
$current_song++; //changes currentsong to next song
if($current_song == count($songlist))
$current_song = 0;
echo "./Sound data/$songlist[$current_song]";
}
else if($norp == 'prevS'){
$current_song--; //changes currentsong to prev song
if($current_song == count($songlist))
$current_song = 0;
echo "./Sound data/$songlist[$current_song]";
}
?>
和
<script language="JavaScript" type="text/javascript" >
function getNextSong()
{
$.get('getsong.php', {name : 'nextS'}, function(song){
document.getElementById('RandomAudio').src = song;
document.getElementById('filename').innerHTML= song;
// alert(song);
});
}
function getPreviousSong()
{
$.get('getsong.php', {name : 'prevS'}, function(song){
document.getElementById('RandomAudio').src = song;
document.getElementById('filename').innerHTML= song;
// alert(song);
});
}
</script>
但我仍然无法超越下一个元素。难道我做错了什么?