Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 变量丢失(可能是因为ajax?)_Php - Fatal编程技术网

Php 变量丢失(可能是因为ajax?)

Php 变量丢失(可能是因为ajax?),php,Php,我有一个相当简单的脚本,但有些地方出了问题,我似乎无法理解。我的脚本从文件夹中收集文件,选择一个随机文件。将根据另一个数组检查随机选择的文件,以检查它是否不在该数组中。这个被选中的数组实际上是一个文本流,通过在-char上分解它而放入数组中 该脚本用于播放集合中的随机声音,如果该声音尚未出现在文本文件中,则可以播放该声音。如果文本文件中的声音已准备就绪,则必须选择另一个随机文件,依此类推。。递归。奇怪的是,在递归函数中,一切都进行得很顺利,但当我显示该函数的结果时,有时它只是显示为空白,而函数肯

我有一个相当简单的脚本,但有些地方出了问题,我似乎无法理解。我的脚本从文件夹中收集文件,选择一个随机文件。将根据另一个数组检查随机选择的文件,以检查它是否不在该数组中。这个被选中的数组实际上是一个文本流,通过在-char上分解它而放入数组中

该脚本用于播放集合中的随机声音,如果该声音尚未出现在文本文件中,则可以播放该声音。如果文本文件中的声音已准备就绪,则必须选择另一个随机文件,依此类推。。递归。奇怪的是,在递归函数中,一切都进行得很顺利,但当我显示该函数的结果时,有时它只是显示为空白,而函数肯定会返回一个要播放并存储到textfile中的文件

PHP脚本通过XMLHTTPObject调用。这可能是变量丢失的原因吗?还是我的剧本中遗漏了什么

剧本: 一个相当盲目的猜测:

更改:

致:

看看它是否有效

顺便说一句:使用递归可能不是过滤掉所有已经播放的声音的最好方法,如果所有声音都在播放,你会进入无限深度等等,而且似乎没有必要

我宁愿去一会儿!在数组中。。。。或者从$playedSounds、$allSounds中选择一个随机键,这是一个相当盲目的猜测:

更改:

致:

看看它是否有效

顺便说一句:使用递归可能不是过滤掉所有已经播放的声音的最好方法,如果所有声音都在播放,你会进入无限深度等等,而且似乎没有必要


我宁愿去一会儿!在数组中。。。。或者从$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);    
}