Jump to content
Fórum Script Brasil
  • 0

Ordenar um Array de Objetos com métodos


lucasrrsimoes
 Share

Question

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;
                }
            }
    }
}

Edited by lucasrrsimoes
Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      149.9k
    • Total Posts
      646.8k
×
×
  • Create New...