Contar o número de ocorrências em PHP

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:

0
0
0
0
0
0

0 . 0 . 0 . 0 . 0 . 0 . 0

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:
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 :)?
 
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 />');
 
Back
Topo