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

Como gerar um array dinamicamente através do PHP


flaviokowalske

Pergunta

Pessoal eu faço a leitura de um determinado diretório e imprimo em tela.

                                        <?php
                                        error_reporting(E_ALL);
                                        $dir = new DirectoryIterator("C:\inetpub\wwwroot\dashboard\bkp");
                                        $i = 1;
                                        foreach($dir as $file) {
                                            if (!$file->isDot()) {
                                                if ($file->isFile()) {
                                                    $fileNome = $file->getFilename();
                                                    $fileTipo = pathinfo($file, PATHINFO_EXTENSION);
                                                    $aux = $file->getMTime();
                                                    $fileData = gmdate("d/m/Y", $aux);
                                                    $fileHora = gmdate("H:i", $aux);
                                                    $fileSize = number_format($file->getSize(), 0, ',', '.');
                                                    echo "<tr>";
                                                    echo "<td class='text-center align-bottom'>" . $i . "</td>";
                                                    echo "<td class='text-center align-bottom'>" . $fileNome . "</td>";
                                                    echo "<td class='text-center align-bottom'>" . $fileTipo . "</td>";
                                                    echo "<td class='text-center align-bottom'>" . $fileData . "</td>";
                                                    echo "<td class='text-center align-bottom'>" . $fileHora . "</td>";
                                                    echo "<td class='text-center align-bottom'>" . $fileSize . " bytes</td>";
                                                    echo "<td class='text-center align-bottom'><i class='fa fa-arrow-up' aria-hidden='true'></i></td>";
                                                    echo "</tr>";
                                                    $i++;
                                                }
                                            }
                                        }
                                        ?>

Até ai tudo bem. Porém eu preciso ordenar o resultado por uma ordem específica, no caso pela coluna Data e para isso a solução que imaginei foi a de criar um array a partir do resultado da leitura do diretório e fazer a ordenação usando a função usort do PHP.

Com que eu faço a criação do array a partir da leitura do dados?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 1
foreach($dir as $file) {
  if ($file->isFile()) {
    // cria um array com um unix timestamp de modificação dos arquivos como índice
    $files[$file->getMTime()] = $file->getFilename();
  }
}
// ordena pelos índices
ksort($files);

// mostra a lista de arquivos ordenados na tela
echo '<pre>ordered $files: ';
print_r($files);
echo '</pre>';

 

Link para o comentário
Compartilhar em outros sites

  • 0
Em 05/11/2020 em 20:51, wash disse:

foreach($dir as $file) {
  if ($file->isFile()) {
    // cria um array com um unix timestamp de modificação dos arquivos como índice
    $files[$file->getMTime()] = $file->getFilename();
  }
}
// ordena pelos índices
ksort($files);

// mostra a lista de arquivos ordenados na tela
echo '<pre>ordered $files: ';
print_r($files);
echo '</pre>';

 

Deu certo, porém como eu monto o array ordenado da forma que você sugeriu, incluindo Tipo, Data, Horário e Tamanho?

Link para o comentário
Compartilhar em outros sites

  • 0

Consegui montar o gerenciador de arquivos do PHP, mas só consigo ordenar os arquivos pela data se usar o formato Y-m-d.

 

<?php
$dir = new DirectoryIterator("C:\wamp64\www");
foreach($dir as $file) {
    if ($file->isFile()) {
      $unix_timestamp=$file->getMTime();
      $datetime=new DateTime("@$unix_timestamp");
      $data=$datetime->format('Y/m/d H:i:s');
      $tipo = pathinfo($file,PATHINFO_EXTENSION);
      $nome = $file->getFilename();
      $tamanho = $file->getSize()." bytes";
      $files[] = Array($data,$nome,$tipo,$tamanho);}};
sort($files);
echo "<pre>";print_r($files);echo "</pre>";

 

Screenshot_1.png

Editado por Frank K Hosaka
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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...