depois de usar $ files = new DirectoryIterator () em PHP, como você classificar os itens?

StackOverflow https://stackoverflow.com/questions/1076881

  •  21-08-2019
  •  | 
  •  

Pergunta

Podemos obter os arquivos em um diretório em PHP por

$files = new DirectoryIterator() 

Depois disso há uma maneira fácil de classificar os itens em uma ordem específica para exibi-los? obrigado.

Foi útil?

Solução

Não parece que há uma maneira de classificar os dados dentro do iterador.

Você pode colocar os dados de exibição em uma matriz intermediário, com uma chave do valor que você deseja classificar e ksort call () na matriz. Isso vai levar dois passes sobre os dados no entanto.

$path = ".";
$files = new DirectoryIterator($path);
$files_array = array();

while($files->valid()) {
        // sort key, ie. modified timestamp
        $key = $files->getMTime();
        $data = $files->getFilename();
        $files_array[$key] = $data;
        $files->next();
}
ksort($files_array);
foreach($files_array as $key => $file){
    print $key . " => " . $file . "\n";
}

edit:

Se você colocar todas as informações que você quer saída para os arquivos nos valores da matriz, você pode simplesmente implode () a matriz depois, em vez de loop através dos dados mais uma vez.

Outras dicas

$files = new DirectoryIterator($path);
$i = 0;
$paths = array();
while($files->valid()) {
    $paths[$i++] = $files->getFileName();
    $files->next();
}
sort($paths)

Que pode ser o que você está procurando, você sempre de aplicar claro que a função de classificação para classificar os caminhos dependendo da sua preferência depois disso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top