How can I efficiently filter out directories and only retrieve file names from a Zip archive using PHP?

To efficiently filter out directories and only retrieve file names from a Zip archive using PHP, you can iterate through the entries in the archive and check if each entry is a file before extracting its name. This can be done by using the isFile() method of the ZipArchive class in PHP.

$zip = new ZipArchive;
if ($zip->open('archive.zip') === TRUE) {
    for ($i = 0; $i < $zip->numFiles; $i++) {
        $entryName = $zip->getNameIndex($i);
        if ($zip->statIndex($i)['size'] > 0) {
            echo $entryName . "\n";
        }
    }
    $zip->close();
} else {
    echo 'Failed to open archive.zip';
}