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

(Resolvido) Listar parte de arrey por data


JamesM

Pergunta

Olá

Tenho um código que le o conteúdo de um arquivo .txt coloca num array e imprime na tela..

<?

$arquivo = 'log.txt';

$linhas = file($arquivo);

for($i = 0; $i < count($linhas); $i++){
  echo rtrim($linhas[$i]) . "<br>";
}
?>
Meu arquivo esta assim:
30-08-10;17:02:02;302;1
31-08-10;17:04:01;404;0 
01-09-10;17:06:02;302;1 
02-09-10;17:08:02;302;1 
03-09-10;17:10:02;302;1
04-09-10;17:12:01;302;1

Como faço pra somente meu array listar as "linhas comletas" que contem as datas

por exemplo: 01-09-10 a 03-09-10

a impressao sai assim

01-09-10;17:06:02;302;1

02-09-10;17:08:02;302;1

03-09-10;17:10:02;302;1

???

é isso..

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Parceiro,

Para resolver este problema, será necessário utilizar a função strtotime();

E ao tranferir as informaçoes do TXT para o array, aplicar uma formatação nesta data.

Pois, se você está comparando somente as datas, guarde o valor no formato date("d-m-Y"); sem o valor da hora.

Fiz um exemplo abaixo, faça um teste ai.

<?php 
    //Configura o timezone a ser utilizado
    date_default_timezone_set('America/Sao_Paulo');

    $arrData   = array();
    $dtInicial = strtotime("01-09-2010");
    $dtFinal   = strtotime("03-09-2010"); 
    
     
    //Atribui ao array os valores 
    $arrData = array(
        strtotime("30-08-2010"),
        strtotime("31-08-2010"),
        strtotime("01-09-2010"),
        strtotime("02-09-2010"),
        strtotime("03-09-2010"),
        strtotime("04-09-2010")
    );
    
    
    //Percorre o array verificando se o valor corresponde a expressão
    FOR($i=0; $i < COUNT($arrData); $i++){
        if($dtInicial <= $arrData[$i] && $dtFinal >= $arrData[$i]){
            echo date('d/m/Y',$arrData[$i]);
        }
    }
?>

Abraço

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

  • 0

Ao gerar esse TXT, existe a possibilidade da data ficar no formato d-m-Y ?

Ou seja, da forma abaixo:

30-08-2010
31-08-2010
01-09-2010
02-09-2010
03-09-2010
04-09-2010
Se as datas já vierem assim, resta então atribuir-las a um array.
for($i = 0; $i < count($linhas); $i++){
  $arrData[] = rtrim($linhas[$i]);
}

Se não for possível, teremos que criar uma função para tratar essa data, convertendo-a para d-m-Y.

Abraço

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

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