javascript - PHP next($array) 和 Javascript

标签 javascript php html iterator

我最近开始学习网络开发,目前正在开发一个网页,该网页读取文件夹中的多个音频文件,并让用户写下她/他所听到的内容的文字记录。我几天前开始,我设法通过 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函数返回 TRUEFALSE。因此,$random_file 变量仅提供数组 $files 是否已成功洗牌的信息。

echo $files[$random_file];

因此完全是假的。 $files 已被打乱 $random_fileTRUEFALSE。但数组键是整数字符串。

我很确定您知道如何解决这个问题。

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/

相关文章:

javascript - 在 PHP 中检索 JS 数据

javascript - JQuery 如果悬停在任一元素上

javascript - Canvas 平移所有元素,包括小 map

javascript - 为什么模块中的函数没有传回主进程?

javascript - 每次用户调用其初始化时销毁旧的光滑轮播实例

php - 注册表未将数据发送到数据库

php - 按一列值对多个 mysql 结果进行分组

javascript - 使用 jquery 根据文本框的值隐藏或过滤 div

javascript - 冰脸3.3 : ace:dialog not working with IE8

html - 如何使用网格使图像适合浏览器窗口?