この質問についてよく調べましたが、適切な解決策が見つかりませんでした。
私が持っているのは、アルバム カバーを使用したいくつかの画像です。それらをクリックすると、アルバムからランダムな曲が引き出されます。アルバムは 01 ~ 05 で、ジャケット画像が含まれています。クリックするsong = "<?php echo (random_song("album_number")); ?>";
と、 id の div に埋め込まれた呼び出しが呼び出されます#player
。
PHP:
<?php
function random_song($dir) {
$files = array (
(array) glob('01/*.mp3'),
(array) glob('02/*.mp3'),
(array) glob('03/*.mp3'),
(array) glob('04/*.mp3'),
(array) glob('05/*.mp3')
);
$set = substr($dir,0,2) - 1;
shuffle($files[$set]);
$key = array_rand($files[$set]);
$file = $files[$set][$key];
return $file;
}
?>
これまでのところ、曲を再生することができました。ただし、別の曲を選択することはありません。1 つのアルバムをクリックすると、曲が選択されます。2 番目のものをクリックすると、曲が再生されます。最初の曲をクリックして戻すと、同じ曲が再生されます。
shuffle()
ご覧のとおり、追加してみましたが、違いはありません。また、それが機能していることを確認するためにvar_dump()
、のすべての部分で実行しました。問題はありませんでした。$files
glob()
私は立ち往生しています。私は何をする必要がありますか?
解決:
Fritz van Campen の言ったことは正しかった: php は 1 回だけ呼び出される。に書き込まれ、<script>
解析されるとすぐに呼び出されるため、各アルバムは元々コード化されていた曲のみを呼び出しました。彼が提案したように、私がする必要があったのは、ソング ピッカーを JavaScript に移行することでした。私の解決策:
var songs = <?php echo json_encode($files); ?>;
...
var set = parseInt(dir.substr(0,2))-1;
var song = songs[set][Math.floor(Math.random() * songs[set].length)];
...これは、php によって作成された配列を JavaScript に転送し、同じシステムを使用してランダムな曲を選択します。
答えてくれてありがとう!