string — Может кто-нибудь объяснить мне этот php-код «подсчета предложений»?

У меня есть задача считать предложения без использования 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

0

Решение

Я бы сказал, что это очень тривиально.
Задача посчитать слова в предложение. Предложение — это строка (последовательность символов), представляющая собой буквы или пробелы (пробел, новая строка и т. Д.) …

Теперь, что слово в предложении? Это отдельная группа букв, которые «не касаются» другой группы букв; смысловые слова (группы букв) отделены друг от друга пробелами (скажем, обычным пробелом)

Итак, самый простой алгоритм подсчета слов состоит в:
— $ 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 слова на счету.

Надеюсь, это было полезно.

0

Другие решения

По сути, это просто подсчет количества пробелов в предложении.

<?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 слова вместо одного.

0

По вопросам рекламы [email protected]