2017-09-06 3 views
0

J'ai une tâche pour compter les phrases sans utiliser str_word_count, mon aîné me l'a donné mais je ne suis pas capable de comprendre. Quelqu'un peut-il l'expliquer?Quelqu'un peut-il m'expliquer ce code php «compter les phrases»?

J'ai besoin de comprendre la variable et comment cela fonctionne.

<?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); 

?> 

La sortie est

+4

S'il s'agit réellement de compter des phrases, alors c'est cassé. –

+0

Il compte les mots pas les phrases et il le fait en promenant chaque caractère dans la chaîne et en comptant les caractères de l'espace unique. –

+0

Salut Hana Ganesa; J'ai peur que votre question soit trop large pour ce site. Le débordement de pile est conçu pour des questions et des réponses précises sur des problèmes de code identifiables; alors que vous demandez vraiment une introduction aux structures de programmation de base. C'est hors de portée pour ce site; Il y a peut-être de bons manuels et tutoriels disponibles là-bas, mais je ne crains pas d'être ici pour faire des recommandations. –

Répondre

0

C'est quelque chose de très trivial, je dirais. La tâche consiste à compter les mots dans une phrase . Une phrase est une chaîne (une séquence de caractères) qui est une lettre ou un espace blanc (espace, nouvelle ligne, etc.) ...

Maintenant, quel est le mot de la phrase? C'est un groupe distinct de lettres qui "ne touche pas" à un autre groupe de lettres; ce qui signifie des mots (groupe de lettres) sont séparées les unes des autres avec un espace blanc (disons juste un espace vide normal)

donc l'algorithme le plus simple pour compter les mots consistent à: - words_count_variable $ = 0 - passer par tous les caractères, un par un - chaque fois que vous trouvez un espace, cela signifie qu'un nouveau mot vient de se terminer avant cela, et vous devez augmenter votre $ words_count_variable - enfin, vous trouverez la fin de la chaîne, et que signifie un mot qui vient de se terminer avant cela, donc vous augmenterez pour la dernière fois votre $ words_count_variable

Prenez "c'est une phrase".

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) 

Ainsi, 4. 4 mots comptés.

J'espère que cela vous a été utile.

0

Fondamentalement, il compte seulement le nombre d'espace dans une phrase.

<?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); 

?> 

Sachez que cette fonction aura des résultats erronés sur plusieurs cas, par exemple, si vous avez deux espaces suivants, cette fonction comptera 2 mots au lieu d'un.