Ir para conteúdo
Fórum Script Brasil
  • 0

Contar valores em um foreach


ReDNoS

Pergunta

Olá pessoal, eu estou com uma dúvida tremenda, não posso fazer a função COUNT dentro do MySQL Query porque não posso agrupar pois faço algumas analises que só são possíveis sem agrupar.

Então aqui vai a minha pergunta, gostaria de saber como Contar valores iguais de mesmo nome dentro de um foreach.

Exemplo:

foreach ($MYSQL->GetArray() as $rs => $r) {

$r['Nome'];

}

E tenho um retorno no meu foreach assim:

- Gustavo

- Guilherme

- Arthur

- Matheus

- Gustavo

- Matheus

- Gustavo

Neste caso eu precisaria ter um retorno monstrando que há 3 nomes Gustavo, 2 Matheus e 1 dos outros nomes.

Como faço para fazer um Count dentro de um foreach?

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

É mas no caso eu preciso ter um Total dos arrays de mesmo nome e eu não posso definir os nomes a serem contados. Eu tenho que ter um valor total de cada um como se fosse um COUNT(Nome) as TotalNome igual que é feito no MySQL Query, só que preciso fazer isso dentro do foreach porque não posso agrupar os nomes pra contagem.

Link para o comentário
Compartilhar em outros sites

  • 0
então...mas no lugar dos nomes que eu coloquei..você coloca o array do resultado da query, isso tudo dentro do foreach.

Acho que dá certo.

Então por favor, me mostra um exemplo com a query $r['Id'] ($r['Id'] é a query responsável por mostrar o nome de todos usuários). Eu tentei fazer mas não consegui...

Link para o comentário
Compartilhar em outros sites

  • 0

Deu um erro aqui quando eu fui testar.

Mas aí eu fiz assim, e funcionou..contou a quantidade de nomes repetidos..

Veja:

$q="select teste from tb_teste";
$site=new site();
$executa=$site->query($q);
$array=array();
while($result=pg_fetch_array($executa)){
array_push($array,$result[0]);



}
print_r( array_count_values($array));

Me retornou isso:

Array ( [MARIO] => 3 [KARINA] => 2 )

No exemplo eu usei o while..mas a chave da coisa está no uso do array_push... declare um array antes do foreach, use o array_push dentro do foreach e fora dele, execute o array_count_values.

Editado por Mario Junior
Link para o comentário
Compartilhar em outros sites

  • 0
Deu um erro aqui quando eu fui testar.

Mas aí eu fiz assim, e funcionou..contou a quantidade de nomes repetidos..

Veja:

$q="select teste from tb_teste";
$site=new site();
$executa=$site->query($q);
$array=array();
while($result=pg_fetch_array($executa)){
array_push($array,$result[0]);



}
print_r( array_count_values($array));

Me retornou isso:

Array ( [MARIO] => 3 [KARINA] => 2 )

No exemplo eu usei o while..mas a chave da coisa está no uso do array_push... declare um array antes do foreach, use o array_push dentro do foreach e fora dele, execute o array_count_values.

Aqui deu erro na linha "$site=new site();"

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpa cara...

é que essa linha que eu coloque (new site) é para chamar a minha classe de conexão que eu uso aqui..

Pode esquecer ela...

Rode a sua query do jeito que você rodava antes..faça o uso apenas da declaração da array antes do seu foreach, use o array_push dentro do seu foreach e use o array_count_values fora do foreach.

Link para o comentário
Compartilhar em outros sites

  • 0
Desculpa cara...

é que essa linha que eu coloque (new site) é para chamar a minha classe de conexão que eu uso aqui..

Pode esquecer ela...

Rode a sua query do jeito que você rodava antes..faça o uso apenas da declaração da array antes do seu foreach, use o array_push dentro do seu foreach e use o array_count_values fora do foreach.

No meu caso é assim:

$SELECT = $db->Execute("SELECT Nome FROM tabela_user");

foreach($SELECT->GetArray() as $rs => $r) {
echo $r['Id']."<br/>";
}

Neste caso como vou implantar os códigos que você falou no meu?

Link para o comentário
Compartilhar em outros sites

  • 0

Já percebi onde eu tinha errado, eu tinha botado array_push($array, $r['Id']);

Mas agora surge outro problema, porque eu preciso pegar esse valor que recebi do total de cada nome e poder fazer comparações...

No caso, eu precisaria fazer o seguinte:

if ($Total_Nome > 10) {
echo "Há mais de 10 nomes iguais";
}elseif ($Total_Nome <= 10) {
echo "Há 10 ou menos nomes iguais";
}

E agora? Como fazer para criar a variável $Total_Nome de maneira que pegue este total de cada nome para fazer comparações?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...