Result()

17 views
Skip to first unread message

Luiz Augusto

unread,
Feb 26, 2018, 7:15:34 PM2/26/18
to ph...@googlegroups.com, list...@googlegroups.com
Pessoal boa noite.
Estou usando o codeigniter, unsando result();

faço :
foreach ($query->result() as $key => $value) 
{
echo '<pre>';
print_r($value);
}
SAIDA
stdClass Object
(
    [nrserie] => 12
    [numerodoaluno] => 3622
    [seriedescricao] => 6º
    [nomeguerra] => ADRIANO BUK 
[vi1] => 4.00 [nrdisc] => 5 [disciplina_descricao] => - Inglês [numeroturma] => 602 [menorquecinco] => 1 )
stdClass Object
(
    [nrserie] => 12
    [numerodoaluno] => 3622
    [seriedescricao] => 6º
    [nomeguerra] => ADRIANO BUK 
    [vi1] => 4.50
    [nrdisc] => 4
    [disciplina_descricao] => Língua Portuguesa
    [numeroturma] => 602
    [menorquecinco] => 1
)
stdClass Object
(
    [nrserie] => 12
    [numerodoaluno] => 3697
    [seriedescricao] => 6º
    [nomeguerra] => ALZEMAN
    [vi1] => 1.00
    [nrdisc] => 1
    [disciplina_descricao] => Matemática
    [numeroturma] => 602
    [menorquecinco] => 1
Dentre centenas de Linhas, estou tentando pegar os alunos
que se repetem, pelo seu numero, mostrar o nome apenas uma 
vez, com a respectivas disciplinas
Estou a dois dias ja, tentando, fazer com que quando o aluno
se repetisse (tentei filtrar pelo numerodoaluno) ele mostrasse apenas a disciplina e o Nome.
Exemplo
[numerodoaluno] => 3622
[nomeguerra] => ADRIANO BUK 
[disciplina_descricao] => Língua Portuguesa
[disciplina_descricao] =>  - Inglês

Desculpe senao fui claro
--
Luiz Augusto S. Oliveira
67 91302726

Luís Aurélio Casoni

unread,
Feb 27, 2018, 7:26:46 AM2/27/18
to PHP MS
Tenta fazer isso:

$alunos = array();
foreach ($query->result() as $key => $value) 
{
    echo '<pre>';
    if (in_array($value->numerodoaluno, $alunos)){
        /**sua rotina de exibicao quando o aluno já é repetido*/
        /** exemplo **/
        print($value->numerodoaluno);
        print($value->disciplina_descricao);
    }else{
        /**rotinas se o aluno for inedito **/
        print_r($value);
        /** salva o aluno para outros usos **/
        $alunos[] = $value->numerodoaluno;
    }
}

Não sei se tem uma solução melhor do que isso.

Atenciosamente,

Luís

Humberto Pereira

unread,
Feb 27, 2018, 8:25:34 AM2/27/18
to Lista PHPMS
A técnica mais usada nesses casos é a de agrupar os elementos por um identificador (no seu caso o numerodoaluno), usando ele como chave de um array. Eu faria da seguinte forma:

<?php
function agrupa_alunos($query) 
{
    $alunos = [];
    foreach ($query->result() as $key => $value) 
    {
        $id = $value->numerodoaluno;
        if (empty($alunos[$id])) {
            /* inicializa os dados do aluno, com os dados basicos
             * e disciplina vazia */
            $alunos[$id] = [
                'id' => $id,
                'nome' => $value->nomedoaluno,
                'disciplinas' => []
            ];
        }
        $alunos[$id]['disciplina'][] = $value->disciplina_descricao;
    }
    
    return $alunos;
}

Att,
Humberto Pereira


--
--
Você recebeu esta mensagem porque está inscrito no Grupo "phpms" em Grupos do Google.
As regras de utilização deste grupo encontram-se em: http://www.phpms.org/regras-da-lista
Para postar neste grupo, envie um e-mail para ph...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail para phpms-unsubscribe@googlegroups.com
Para ver mais opções, visite este grupo em http://groups.google.com/group/phpms?hl=pt-PT
Para acessar o site do grupo, visite: http://www.phpms.org/

---
Você recebeu essa mensagem porque está inscrito no grupo "PHP MS" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para phpms+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Humberto Pereira

unread,
Feb 27, 2018, 8:27:14 AM2/27/18
to Lista PHPMS
Coloquei num gist, pq acho que ficou dificil de ler o codigo - https://gist.github.com/begnini/a4ba25f9f33e16233f1b8f8050614c5b

Att,
Humberto Pereira

Cauan Cabral

unread,
Feb 27, 2018, 8:28:25 AM2/27/18
to PHPMS
A solução do Luís deve funcionar, mas o ideal é você fazer o filtro direto na sua query para
evitar processamento atoa.

Dê uma lida sobre o uso de DISTINCT em query.
Num google rápido aqui achei essa resposta que pode te ajudar https://stackoverflow.com/questions/19509805/how-to-use-distinct-here-in-my-query-codeigniter

Att,

2018-02-27 7:26 GMT-04:00 Luís Aurélio Casoni <luis.au...@gmail.com>:

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "phpms" em Grupos do Google.
As regras de utilização deste grupo encontram-se em: http://www.phpms.org/regras-da-lista
Para postar neste grupo, envie um e-mail para ph...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail para phpms-unsubscribe@googlegroups.com
Para ver mais opções, visite este grupo em http://groups.google.com/group/phpms?hl=pt-PT
Para acessar o site do grupo, visite: http://www.phpms.org/

---
Você recebeu essa mensagem porque está inscrito no grupo "PHP MS" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para phpms+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Cauan Cabral
----------------
Como falar comigo: Google Hangout: cau...@gmail.com Skype: CauanCabral 
Onde me encontrar: LinkedinFacebookWordpressTwitter

Reply all
Reply to author
Forward
0 new messages