Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Elizeu Bernardino

[Resolvido] Como contar palavras iguais sem se acumular, dentro d

Recommended Posts

Olá, tudo bem?

 

Alguém sabe como fazer este código funcionar perfeitamente dentro de um while ?

Pois ele está acumulando as repetições ao mostrar as palavras !!!

O resto está funcionando legal.

 

 

<?php

$db = mysql_connect("localhost","root","");

$bd = mysql_select_db("banco", $db);

 

$sql = mysql_query("SELECT * FROM coisas ORDER BY id DESC");

while($coluna = mysql_fetch_assoc($sql)){

$texto = $coluna['texto'];

 

$texto2 = "$texto ";

 

$palavras = explode(" ",$texto2);

foreach ($palavras as $palavra){

@$numero[$palavra]++;

}

 

asort($numero);

 

foreach ($numero as $palavra => $aparicoes){

echo "<br>A palavra $palavra apareceu $aparicoes vez(es)".PHP_EOL;

}

}

?>

 

Agradeço desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que está acumulando?

Testei com esse texto: "teste aline teste teste várias textos" e deu certo:

 

A palavra apareceu 1 vez(es)

A palavra textos apareceu 1 vez(es)

A palavra várias apareceu 1 vez(es)

A palavra aline apareceu 1 vez(es)

A palavra teste apareceu 3 vez(es)

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que está acumulando?

Testei com esse texto: "teste aline teste teste várias textos" e deu certo:

 

A palavra apareceu 1 vez(es)

A palavra textos apareceu 1 vez(es)

A palavra várias apareceu 1 vez(es)

A palavra aline apareceu 1 vez(es)

A palavra teste apareceu 3 vez(es)

 

 

Então aline_, quando a gente usa em um único texto da tabela, fuciona perfeitamente!

Mas quando se usa com repetições, vindo do BANCO DE DADOS, começa a se acumular, a partir da segunda listagem do BANCO DE DADOS!

Compartilhar este post


Link para o post
Compartilhar em outros sites

:seta: array_count_values

 

Exemplo:

<?php

$test = array(
   'Um teste de teste para um de dois',
   'Outro teste para testar para corrigir',
   'Mais um teste de um simples teste',
   'Fim dos testes de testar o fim dos testes',
);

$result = array( );

foreach( $test as $values )
{
   $result[ ] = array_count_values( explode( ' ', $values ) );
}

foreach( $result as $values )
{
   asort( $values );

   foreach( $values as $key => $value )
   {
       printf( 'A palavra <strong>"%s"</strong> apareceu %u vez(es)<br/>', $key, $value );
   }

   echo '<hr>';
}

 

 

Se não quiser diferenciar maiúsculas de minúsculas, use strtolower.

explode( ' ', strtolower( $values ) );

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.