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;
}
Pergunta
lucasrrsimoes
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
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;
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;
}
}
}
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.