7
        $za = new ZipArchive();
        $za->open($source);
        for( $i = 0; $i < $za->numFiles; $i++ ){
            $stat = $za->statIndex( $i );
            $items = array( basename( $stat['name'] ) . PHP_EOL );
            foreach($items as $item) {
            echo $item;
            }
        }

このコードは、zip アーカイブ内のすべてのファイルを一覧表示しますが、フォルダーの一覧を除外したいと考えています。配列内のアイテムがフォルダーの場合、配列から除外したいのですが、フォルダー内のファイルをリストしたいです。リストにフォルダの名前を表示しないでください。

項目が foreach ループ内のディレクトリであるかどうかを検出する方法はありますか (どのように?)、または配列で検索を実行してフォルダーを探し、設定を解除する必要がありますか (どのように?) ?

ご協力いただきありがとうございます

4

4 に答える 4

3

あなたのforeachは役に立たない。1 つの項目で配列を反復処理します。

とにかく、フォルダを検出するには2つの方法があります。まず、フォルダは「/」で終了します。2 番目のフォルダーのサイズは 0 です。

$za = new ZipArchive();
$za->open('zip.zip');
$result_stats = array();
for ($i = 0; $i < $za->numFiles; $i++)
    {
    $stat = $za->statIndex($i);
    if ($stat['size'])
        $result_stats[] = $stat;
    }

echo count($result_stats);
于 2013-06-28T00:33:31.420 に答える