foreach没有循环,我参考不正确吗?

时间:2017-02-21 06:13:51

标签: php arrays foreach

我在自助服务终端的背景音乐播放器中有以下代码: -

<audio id="player" autoplay="true" loop="true"  >
<?php     
    $music = glob("./music/*");  // get all files in the music directory
    shuffle($music);
    foreach ($music as $song){         
        echo '<source src="'. $song . '" type="audio/ogg">';
    }

   ?>
</audio>
<?php var_dump($music); ?>

它只写一个源元素,匹配(shuffled)数组的第一个成员。

调试转储列出了完整的数组,所以我认为我的foreach表达式或echo表达式中有错误。

2 个答案:

答案 0 :(得分:0)

是的,这是正确的,您需要更正glob('<need some change here>')它的路径问题,否则代码就完美了。

C:\wamp64\www\phpDiary\program\1.php:10:
array (size=5)
  0 => string '1 (2).jpg' (length=9)
  1 => string '2.php' (length=5)
  2 => string '1.php' (length=5)
  3 => string '1 (1).jpg' (length=9)
  4 => string '1 (3).jpg' (length=9)

这是您的代码的输出。我认为它的$ music = glob(&#34; ../ music / *&#34;);

  

在目录

中向后移动双点

用这个代替你的代码。

<audio id="player" autoplay="true" loop="true" controls>
<?php
    $music = glob("../music/*");  // get all files in the music directory
    shuffle($music);
    foreach ($music as $song){
        // echo '<source src="'. $song . '" type="audio/ogg">';
        echo "<source src='".$song."' type='audio/ogg'>";
        // echo "hello";
    }
   ?>
</audio>

答案 1 :(得分:0)

我的问题是HTML5 Audio元素无法指定要按顺序播放的多个源。多个源标签只是指定备选方案(以涵盖格式的不完整浏览器支持),我已经知道了。 让我离开轨道的是视图源显示计算源,仅显示第一个成功源的源标记。其余部分通过Element Inspector可见。

所以我需要使用javascript解决方案,例如http://www.lastrose.com/html5-audio-video-playlist/的解决方案 这将是明天的任务:-)感谢您的时间。