Php 变量丢失(可能是因为ajax?)
我有一个相当简单的脚本,但有些地方出了问题,我似乎无法理解。我的脚本从文件夹中收集文件,选择一个随机文件。将根据另一个数组检查随机选择的文件,以检查它是否不在该数组中。这个被选中的数组实际上是一个文本流,通过在-char上分解它而放入数组中 该脚本用于播放集合中的随机声音,如果该声音尚未出现在文本文件中,则可以播放该声音。如果文本文件中的声音已准备就绪,则必须选择另一个随机文件,依此类推。。递归。奇怪的是,在递归函数中,一切都进行得很顺利,但当我显示该函数的结果时,有时它只是显示为空白,而函数肯定会返回一个要播放并存储到textfile中的文件 PHP脚本通过XMLHTTPObject调用。这可能是变量丢失的原因吗?还是我的剧本中遗漏了什么 剧本: 一个相当盲目的猜测: 更改: 致: 看看它是否有效 顺便说一句:使用递归可能不是过滤掉所有已经播放的声音的最好方法,如果所有声音都在播放,你会进入无限深度等等,而且似乎没有必要 我宁愿去一会儿!在数组中。。。。或者从$playedSounds、$allSounds中选择一个随机键,这是一个相当盲目的猜测: 更改: 致: 看看它是否有效 顺便说一句:使用递归可能不是过滤掉所有已经播放的声音的最好方法,如果所有声音都在播放,你会进入无限深度等等,而且似乎没有必要Php 变量丢失(可能是因为ajax?),php,Php,我有一个相当简单的脚本,但有些地方出了问题,我似乎无法理解。我的脚本从文件夹中收集文件,选择一个随机文件。将根据另一个数组检查随机选择的文件,以检查它是否不在该数组中。这个被选中的数组实际上是一个文本流,通过在-char上分解它而放入数组中 该脚本用于播放集合中的随机声音,如果该声音尚未出现在文本文件中,则可以播放该声音。如果文本文件中的声音已准备就绪,则必须选择另一个随机文件,依此类推。。递归。奇怪的是,在递归函数中,一切都进行得很顺利,但当我显示该函数的结果时,有时它只是显示为空白,而函数肯
我宁愿去一会儿!在数组中。。。。或者从$playedSounds、$allSounds中选择一个随机键,非常感谢!我同意你的意见。但在这种情况下,最多只有37个实例。让它工作对我来说不是问题:哦,顺便说一句,脚本不能运行到无限循环中,因为检查两个数组的计数是相互检查的。非常感谢!我同意你的意见。但在这种情况下,最多只有37个实例。这对我来说不是一个问题:哦,顺便说一句,脚本不能运行到无限循环中,因为两个数组的计数是相互检查的。
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
$soundList = get_folder_entries("playlist", array("wma", "wav", "mp3"));
$playedFile = "played.txt";
$playedContents = file_get_contents($playedFile);
$playedSounds = explode("#", $playedContents);
// if all files are played just select a new file and reset played.txt
if(count($playedSounds) == count($soundList))
{
$fileHandle = fopen($playedFile, "w");
$file = $soundList[mt_rand(0, count($soundList) - 1)];
fwrite($fileHandle, $file."#");
fclose($fileHandle);
echo "<input type=\"hidden\" id=\"SoundToPlay\" value=\"".$file."\"/>";
}
// pick a random file which has not yet been played
else
{
$file = pick_random_file($soundList, $playedSounds);
$fileHandle = fopen($playedFile, "w");
fwrite($fileHandle, $playedContents.$file."#");
fclose($fileHandle);
echo 'INPUT = '.$file;
echo "<input type=\"hidden\" id=\"SoundToPlay\" value=\"".$file."\"/>";
}
// some debug/output info
echo "<table width=\"100%\">";
echo "<tr>";
echo "<td class=\"header\"><h2>[Array] Playlist</h2></td>";
echo "<td class=\"header\"><h2>[Array] Played</h2></td>";
echo "</tr>";
echo "<tr>";
echo "<td><pre>";
print_r($soundList);
echo "</pre></td>";
echo "<td><pre>";
print_r($playedSounds);
echo "</td>";
echo "</tr>";
echo "</table>";
// collect the files from a folder with a specific extension
function get_folder_entries($dir, array $extensions)
{
$fileList = array();
if($fileHandle = opendir($dir))
{
while(false !== ($file = readdir($fileHandle)))
{
if($file != "." && $file != ".." && in_array(end(explode(".", $file)), $extensions))
{
array_push($fileList, $file);
}
}
}
return $fileList;
}
// recursive function to pick a random sound
function pick_random_file(array $soundList, array $playedSounds)
{
$sound = $soundList[mt_rand(0, count($soundList) - 1)];
if(!in_array($sound, $playedSounds))
{
return $sound;
}
else
{
pick_random_file($soundList, $playedSounds);
}
}
else
{
pick_random_file($soundList, $playedSounds);
}
else
{
return pick_random_file($soundList, $playedSounds);
}