0

Problema Na Ordenação De Arrays

criado por Paulo Taneda em 09/09/2010 10:22am
Vou descrever a situação e explicando o que está acontecendo de errado.

No Banco de Dados, tenho os campos "datas" e "horarios" pertencentes a uma tabela...

Os formatos destes campos são:
datas = 23/08/2010;24/08/2010;25/08/2010;(...)
horarios = 13:00:00;15:00:00;17:00:00;19:00:00;(...)

Cada data e cada horário está separado por ";" (ponto e vírgula).

Pois bem, o código deve funcionar da seguinte maneira:

1) O PHP pega a data atual no servidor (variável $data) e o horário de "agora" (variável $horario);

2) Procura no BD os registros que contenham a data atual no campo "datas" (através do LIKE no SELECT);

3) Dentro dos registros encontrados, é necessário pegar o campo "horarios" e dar um explode pelo ";", transformando os horários em arrays;

4) São exibidos na tela somente os horários que sejam MAIORES ou IGUAIS ao horário de "agora" (variável $horario definida no início);

Até aqui tudo ok! O problema vem a seguir:

4) É necessário exibir na tela todos os horários que atendam aos critérios, mas com ordenação crescente.

Já tentei de tudo quando é maneira, todos os tipos de sorts, array_merge, array_combine, array_multisort e outros. Acontece que ele exibe os horários de forma ordenada dentro de cada array gerada, mas não une as arrays para ordenar todos os horários.

Alguma idéia de como fazer isso??? Ficarei extremamente grato por qualquer ajuda. Abraços!


Segue abaixo o código:

<?php

$data = date("d/m/Y");
$hora = date("H:i:s");

$consulta = mysql_query("SELECT datas,horarios FROM tabela WHERE datas LIKE '%$data%'");

while($i = mysql_fetch_array($consulta)) {

$horarios = explode(";", $i[1]);
array_multisort($horarios, SORT_ASC, SORT_REGULAR);

foreach ($horarios as $key => $horarios_each) {
if ($horarios_each >= $hora) {
echo $horarios_each."<br />";
}
}
}

?>

O resultado é o seguinte (precisa ficar ordenado):

22:00:00 | array 1
23:55:00 |
23:56:00 |
23:57:00 |
23:58:00 |
23:59:00 |
--------
23:15:00 | array 2
23:30:00 |
23:45:00 |
23:50:00 |
23:56:00 |
--------
21:30:00 | array 3
23:00:00 |

Lista de Respostas:

+1
09/09/2010 10:24am
(~14 anos atrás)
Victor Mangia respondeu:
leia a documentação para as funções usort e strcasecmp

0
09/09/2010 10:28am
(~14 anos atrás)
Paulo Taneda respondeu:
Funcionou, obrigado!

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)