"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > ## Como determinar com segurança se um diretório está vazio em PHP?

## Como determinar com segurança se um diretório está vazio em PHP?

Publicado em 2024-11-08
Navegar:801

## How to Reliably Determine if a Directory is Empty in PHP?

Verificando o vazio do diretório em PHP

Determinar se um diretório está vazio pode ser uma tarefa vital em vários cenários de desenvolvimento web. No entanto, certos scripts podem encontrar problemas em que a saída sugere incorretamente um diretório vazio ou não vazio, apesar da presença ou ausência de arquivos nele.

Script original

O fornecido O script tenta verificar se o diretório está vazio usando o seguinte código:

$q = (count(glob("$dir/*")) === 0) ? 'Empty' : 'Not empty';

No entanto, a função glob() pode falhar ao detectar arquivos ocultos Unix, levando a resultados imprecisos.

Solução Melhorada

Para resolver esse problema, recomendamos usar a função scandir() em vez de glob(), pois ela pode detectar arquivos regulares e ocultos. Além disso, para melhorar a eficiência, podemos usar uma função personalizada para verificar se há vazios mais rapidamente:

function is_dir_empty($dir) {
  return (count(scandir($dir)) == 2);
}

Esta função verifica se o diretório contém apenas duas entradas: o diretório atual (".") e o diretório pai (".."), indicando um diretório vazio.

Prática recomendada

Como prática recomendada, é aconselhável usar valores booleanos diretamente nas estruturas de controle, em vez de depender de strings de texto como "Vazio" ou "Não vazio". Expressões booleanas fornecem uma maneira mais concisa e precisa de determinar condições vazias ou não vazias.

Por exemplo, em vez de usar:

if ($q == "Empty") {
  // ...
}

Você pode usar diretamente:

if (is_dir_empty($dir)) {
  // ...
}
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3