Create php array, saving how many times a string appears

Asked

Viewed 30 times

-2

Good Morning! I have a problem, I have two strings $search and $hostname, inside search I have the full text, and inside $hostname the words I want to look for in the variable $search.

Ex of variable values:

$procurar = "Nome da Maquina: Cavadeira, Linha: 1, Gravidade: Média, Operador:Rafael; Nome da Maquina: Cavadeira, Linha: 3, Gravidade: Baixa, Operador:Lucas; Nome da Maquina: Motoniveladora, Linha: 3, Gravidade: Alta, Operador:Joao; Nome da Maquina: Cavadeira, Linha: 1, Gravidade: Média, Operador:Rafael;"

$nome_das_maquinas = "Cavadeira/Cavadeira/Motoniveladora/Cavadeira"

I need to count how many times these $hostnames appear in $search and save inside an array in descending order

Ex:

Cavadeira = 3 <br>
Motoniveladora = 1

I am a few days trying to do this, can someone give a help? Follow my test code:

$arquivo = 'arquivos/etiqueta.txt';

$nomedasmaquinas = 'arquivos/nomedasmaquinas.txt';

$handle = fopen( $arquivo, 'r' );

$handle2 = fopen( $nomedasmaquinas, 'r' );

$ler = fread( $handle, filesize($arquivo) );
$ler2 = fread( $handle2, filesize($nomedasmaquinas) );

$procurar = $ler; //Esta vindo de um arquivo que contem as informacoes das maquinas, como um texto 
longo (EX: Nome da maquina: Cavadeira Linha: 1 Gravidade: Media etc...)
$nome_das_maquinas_str = $ler2; //Esta vindo de um arquivo, e as palavras estão separadas por /

$array = explode('/', $nomestr); //Separo as palavras por / e gravo no array
$i = 0;
foreach($array as $valores){
   if($valores){
      $quantidade_que_aparece = substr_count($procurar, $valores); //Conto quantas vezes os valores que estavam no $array aparecem.
       $nomes_vetor[$i] = $quantidade_que_aparece; //Gravo a quantidade em um vetor
   }
  $i++; //Conta +1 pra percorrer o vetor
 }


// Fecha o arquivo
fclose($handle);
  • And what mistake gives @Lucas?

  • Error does not give any, I just can’t think of this solution "I need to count how many times these $names_das_machines appear in $search and save inside an array in descending order"

1 answer

0


Lucas, your code is practically ready, I just needed to order the array. I made the following modifications:

  • $nomestr does not exist, replaced by $nome_das_maquinas_str
  • Replace the numeric index $i by the machine name.
  • $valores turned $maquina
  • I ordered the array with arsort
<?php
$arquivo = 'arquivos/etiqueta.txt';

$nomedasmaquinas = 'arquivos/nomedasmaquinas.txt';

$handle = fopen( $arquivo, 'r' );

$handle2 = fopen( $nomedasmaquinas, 'r' );

$ler = fread( $handle, filesize($arquivo) );
$ler2 = fread( $handle2, filesize($nomedasmaquinas) );

$procurar = $ler; //Esta vindo de um arquivo que contem as informacoes das maquinas, como um texto longo (EX: Nome da maquina: Cavadeira Linha: 1 Gravidade: Media etc...)
$nome_das_maquinas_str = $ler2; //Esta vindo de um arquivo, e as palavras estão separadas por /

$array = explode('/', $nome_das_maquinas_str); //Separo as palavras por / e gravo no array

foreach($array as $maquina){
    $quantidade_que_aparece = substr_count($procurar, $maquina); //Conto quantas vezes os valores que estavam no $array aparecem.
    $nomes_vetor[$maquina] = $quantidade_que_aparece; //Gravo a quantidade em um vetor
}

//Ordena decrescentemente
arsort($nomes_vetor);

//Exibe
echo "<pre>";var_dump($nomes_vetor);echo "</pre>";

// Fecha o arquivo
fclose($handle);
fclose($handle2);
?>
  • Muitoo thanks friend, I will study more arrays in php! S2

Browser other questions tagged

You are not signed in. Login or sign up in order to post.