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

Ordenar um Array de Objetos com métodos


lucasrrsimoes

Pergunta

E ai pessoal, tudo beleza?

Sou novo no Fórum, e já tentei buscar na internet e neste fórum mas não consegui solucionar meu problema.

Gostaria de ordenar os alunos por data de matricula, abaixo está meu código da classe AlunoDAO, tem um método "public function BuscarPessoaNome($Nome = "")" que gostaria que viesse ordenado por data de matrícula. Na classe aluno, tem esse método

 

 public function getDataMatricula() {

	        return $this->DataMatricula;

	    }

 

 

 

 

Como que devo ordenar a lista que irá retornar no método por data de matricula, lembrando que atualmente grava apenas uma string, não está no formato de data;

 

<?php
namespace classes\dao;

use classes\entidades\Aluno;

class AlunoDAO {
    private $NomeSessao;
    private $arrAluno;
    
    public function __construct($NomeSessao) {
        $this->NomeSessao = $NomeSessao;
        if(isset($_SESSION[$this->NomeSessao]))
        {
            $this->arrAluno = $_SESSION[$this->NomeSessao];/*Se a sessão existir ele atribui ao array*/
        }
        else
        {
            $this->arrAluno = array();/*Se a sessão não existir ele cria o array*/
        }
    }
    
    public function __destruct()
    {
        $_SESSION[$this->NomeSessao] = $this->arrAluno;    
    }
    
    public function IncluirAluno(Aluno $objAluno)
    {
        $BuscaCodigoAluno = count($this->arrAluno) - 1;
        if($BuscaCodigoAluno < 0)//verifica se já tem algum código cadastrado
        {
            $Codigo = 1;
        }
        else
        {
            $Codigo = end($this->arrAluno);
            $Codigo = $Codigo->getCodigo() + 1;
        }
        $objAluno->setCodigo($Codigo);
        $this->arrAluno[] = $objAluno;
        return true;        
    }
    
    public function ExcluirAluno($codigo) {        
        foreach ($this->arrAluno as $objAluno)
        {
            if($objAluno->getCodigo() == $codigo)
            {
                $elemento = array_search($objAluno, $this->arrAluno);
                unset($this->arrAluno[$elemento]);
            }
        }
    }
    
    public function AlterarAluno(Aluno $Aluno) {
        foreach ($this->arrAluno as $objAluno)
        {
            if($objAluno->getCodigo() == $Aluno->getCodigo())
            {
                $elemento = array_search($objAluno, $this->arrAluno);
                $this->arrAluno[$elemento] = $Aluno;
            }
        }
    }
    
    public function cmp($a, $b) {
        if ($a->getDataMatricula() == $b->getDataMatricula())
        {
            return 0;
        }

        return (strtotime($a->getDataMatricula()) < strtotime($b->getDataMatricula())) ? -1 : 1;
    
    }
    
    public function BuscarPessoaNome($Nome = "")
    {
        if($Nome != "")
        {
            $arrAlunoFiltrado =  [];
            foreach ($this->arrAluno as $objAluno)
            {
                if($objAluno->getNome() == $Nome)
                {
                    array_push($arrAlunoFiltrado,$objAluno);
                }
            }
            return ordernarArray($arrAlunoFiltrado);
        }
        else
        {
            //return usort($this->arrAluno, array($this, 'cmp'));
                
            return $this->arrAluno;
        }
    }
    
    


    public  function ordenarArray($arrAlunoOrdenado)
    {
        
        
        
        $arrAlunosRetorno = array();
        for($i = 1; $i < count($arrAlunoOrdenado); $i++)
        {
            if($arrAlunoOrdenado[$i-1]->getDataMatricula() < $arrAlunoOrdenado[$i]->getDataMatricula())
            {
                array_push($arrAlunosRetorno, $arrAlunoOrdenado[$i-1]);
            }
            else
            {
                array_push($arrAlunosRetorno, $arrAlunoOrdenado[$i]);
            }
        }
        return $arrAlunosRetorno;
    }


    public function BuscarPessoaCodigo($Codigo = "")
    {
            foreach ($this->arrAluno as $objAluno)
            {
                if($objAluno->getCodigo() == $Codigo)
                {
                    return $objAluno;
                }
            }
    }
}

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

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...