Я создал функцию, которая случайно генерирует фразу из жесткокодированного списка слов. У меня есть функция get_words()
, которая имеет строку жестко закодированных слов, которая превращается в массив, затем перетасовывается и возвращается.Php: Индексирование строк неустойчиво?
get_words()
вызывается generate_random_phrase()
, который перебирает get_words()
п раз, и на каждой итерации сцепляет русское слово в заключительной фразе, которую суждено быть возвращены пользователю.
Моя проблема заключается в том, что по какой-то причине PHP продолжает давать мне непоследовательные результаты. Это дает мне слова, которые рандомизированы, но дает непоследовательное количество слов. Я указываю 4 слова по умолчанию, и это дает мне фразы в диапазоне от 1-4 слов вместо 4. Эта программа настолько проста, что почти невероятно, я не могу точно определить точный вопрос. Кажется, что сломанная ссылка в цепочке - это массив $words
, который индексируется, кажется, почему-то иногда индексирование терпит неудачу. Я незнаком с PHP, может кто-нибудь объяснить это мне?
<?php
function generate_random_phrase() {
$words = get_words();
$number_of_words = get_word_count();
$phrase = "";
$symbols = "[email protected]#$%^&*()";
echo print_r($phrase);
for ($i = 0;$i < $number_of_words;$i++) {
$phrase .= " ".$words[$i];
}
if (isset($_POST['include_numbers']))
$phrase = $phrase.rand(0, 9);
if (isset($_POST['include_symbols']))
$phrase = $phrase.$symbols[rand(0, 9)];
return $phrase;
}
function get_word_count() {
if ($_POST['word_count'] < 1 || $_POST['word_count'] > 9)
$word_count = 4; #default
else
$word_count = $_POST['word_count'];
return $word_count;
}
function get_words() {
$BASE_WORDS = "my sentence really hope you
like narwhales bacon at midnight but only
ferver where can paper laptops spoon door knobs
head phones watches barbeque not say";
$words = explode(' ', $BASE_WORDS);
shuffle($words);
return $words;
}
?>
Wow, ваш гений! благодаря –