У меня есть задача считать предложения без использования str_word_count
, мой старший дал мне это, но я не могу понять. Может кто-нибудь объяснить это?
Мне нужно понять переменную и как она работает.
<?php
$sentences = "this book are bigger than encyclopedia";
function countSentences($sentences) {
$y = "";
$numberOfSentences = 0;
$index = 0;
while($sentences != $y) {
$y .= $sentences[$index];
if ($sentences[$index] == " ") {
$numberOfSentences++;
}
$index++;
}
$numberOfSentences++;
return $numberOfSentences;
}
echo countSentences($sentences);
?>
Выход
6
Я бы сказал, что это очень тривиально.
Задача посчитать слова в предложение. Предложение — это строка (последовательность символов), представляющая собой буквы или пробелы (пробел, новая строка и т. Д.) …
Теперь, что слово в предложении? Это отдельная группа букв, которые «не касаются» другой группы букв; смысловые слова (группы букв) отделены друг от друга пробелами (скажем, обычным пробелом)
Итак, самый простой алгоритм подсчета слов состоит в:
— $ words_count_variable = 0
— пройти все персонажи, один за другим
— каждый раз, когда вы находите пробел, это означает, что новое слово только что закончилось до этого, и вы должны увеличить свою $ words_count_variable
— наконец, вы найдете конец строки, а это означает, что слово только что закончилось до этого, так что вы в последний раз увеличите свой $ words_count_variable
Возьмите «это предложение».
We set $words_count_variable = 0;
Your while cycle will analyze:
"t""h""i""s"" " -> blank space: a word just ended -> $words_count_variable++ (becomes 1)
"i""s"" " -> blank space: a word just ended -> $words_count_variable++ (becomes 2)
"a"" " -> blank space: a word just ended -> $words_count_variable++ (becomes 3)
"s""e""n"...
"n""c""e"-> end reached: a word just ended -> $words_count_variable++ (becomes 4)
Итак, 4.
4 слова на счету.
Надеюсь, это было полезно.
По сути, это просто подсчет количества пробелов в предложении.
<?php
$sentences = "this book are bigger than encyclopedia";
function countSentences($sentences) {
$y = ""; // Temporary variable used to reach all chars in $sentences during the loop
$numberOfSentences = 0; // Counter of words
$index = 0; // Array index used for $sentences
// Reach all chars from $sentences (char by char)
while($sentences != $y) {
$y .= $sentences[$index]; // Adding the current char in $y
// If current char is a space, we increase the counter of word
if ($sentences[$index] == " "){
$numberOfSentences++;
}
$index++; // Increment the index used with $sentences in order to reach the next char in the next loop round
}
$numberOfSentences++; // Additional incrementation to count the last word
return $numberOfSentences;
}
echo countSentences($sentences);
?>
Имейте в виду, что эта функция будет иметь неправильные результаты в нескольких случаях, например, если после вас есть два пробела, эта функция будет считать 2 слова вместо одного.