PHP的问题.循环或If语句


PHP Questions. Loops or If statement?

我正在尝试学习PHP,而我写一个基本的应用程序。我想要一个过程,将旧的单词放入数组$oldWords = array();中,以便使用array_push(oldWords, $words)插入所有已使用的$words

每次执行代码时,我希望有一个进程从$wordList = array(...)中找到一个新词。但是,我不想选择任何已经使用过或在$oldWords中的单词。

现在我在想我该怎么做。我一直在考虑通过$wordChooser = rand (1, $totalWords);找到一个新词,我一直在考虑使用if/else语句,但问题是,如果array_search($word, $doneWords)找到一个词,那么我需要更新这个词并再次检查它。

这个过程似乎非常低效,我正在考虑一个循环函数,但是,哪一个,什么是解决这个问题的好方法?

谢谢

我有点困惑,PHP在脚本执行结束时死亡。无论您如何生成这个数组,您是否也可以不同时从单词列表中生成尚未使用的单词?(array_diff从所有单词到常用单词)。

或者,如果有其他原因我错过了,为什么你不能使用循环并快速找到$wordList$oldWordO(n)中没有的第一个单词呢?

function generate_new_word() {
    foreach ($wordList as $word) {
        if (in_array($word, $oldWords)) {
            return $word; //Word hasn't been used
        }
    }
    return null; //All words have been used
}

或者,只是做一个数组差值(虽然效率较低,因为最好的情况是它必须遍历整个数组,而对于上面的方法,它只需要遍历第一个单词)

EDIT: For random

$newWordArray = array_diff($allWords, $oldWords); //List of all words in allWords that are not in oldWords
$randomNewWord = array_rand($newWordArray, 1);//Will get a new word, if there are any

或者除非您对创建自己的数据类型感兴趣,否则最好的情况可能是O(log(n))