1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Contar o número de ocorrências em PHP

Discussão em 'Programação' iniciada por COLD_WAR, 25 de Agosto de 2006. (Respostas: 4; Visualizações: 4588)

  1. COLD_WAR

    COLD_WAR Power Member

    Estou aqui com uma dúvida dos diabos, que já me está a dar uma dor de cabeça descomunal.
    Eu preciso de contar o número de ocurrências de um certo elemento num array. O PHP tem o array_search, mas ele só me retorna o indíce do primeiro elemento que encontra e não continua a percorrer o array. Bem o que já tentei fazer foi o seguinte.

    Imaginemos o seguinte modelo, similar ao meu caso:

    Código:
    
    $fact_array=array("batatas", "alfaces", "cebolas", "batatas", "couves");
    
    $size = count ($fact_array);
    
    for ($j=0; $j <= $size; $j++)
    {
         $key = array_search('batatas', $fact_array);
         print ("<br>");
         print ($key);
         $nova_key = $nova_key . ' ' . "." . ' ' . $key;
    }
    print ($key);
    print ($nova_key);
    
    Ele retorna-me:

    Ou seja, encontra a primeira "batata" no indíce 0 e não continua a percorrer o array de modo a encontrar a segunda batata no indíce 3.

    A ultima linha do output é a string que eu quero que ele crie com os indíces das ocurrências pretendida.
    Alguém sabe dizer o que estou a fazer mal, ou de algum workaround?

    Thanks
     
    Última edição: 25 de Agosto de 2006
  2. spastikman

    spastikman Banido

    Código:
    
    $fact_array=array("batatas", "alfaces", "cebolas", "batatas", "couves");
    
    $size = count ($fact_array);
    
    for ($j=0; $j <= $size; $j++)
    {
         $key = array_search('batatas', $fact_array);
         print ("<br>");
         print ($key);
         $nova_key = $nova_key . ' ' . "." . ' ' . $key;
    }
    print ($key);
    print ($nova_key);
    

    que tal ...

    Código:
    
    $contador = 0 ;
    $fact_array=array("batatas", "alfaces", "cebolas", "batatas", "couves");
    
    for ($i=0; $i < sizeof $fact_array ; $i++){
    
         if (strstr($fact_array[$i], "batatas"))
         $contador++;
    }
    
    echo "\r\n Wee ! Tenho $contador Batatas !\r\n :o)";
    
    
    Serve :)?
     
  3. COLD_WAR

    COLD_WAR Power Member

    Obg, já ajuda e resolve parte do problema, tb precisava que me indicasse o indíce do array onde está cada "batata".

    Obg.
     
  4. COLD_WAR

    COLD_WAR Power Member

    Já resolvi, foi por um printf do valor de $i.
    Obg na mesma
     
  5. _freelancer_

    _freelancer_ Power Member

    Eu sei que já venho 5 dias atrasado mas e que tal:
    PHP:
    $fact_array=array("batatas""alfaces""cebolas""batatas""couves");

    $aContagem array_count_values($fact_array);

    foreach ( 
    $aContagem as $sElemento => $iVezes )
        print(
    'Elemento '.$sElemento.': '.$iVezes.'<br />');
     

Partilhar esta Página