$file, 'hash' => $hash, 'file_size' => filesize($file), 'compressed_size' => 0, 'uncompressed_size' => 0, 'files' => 0, 'used_files' => 0, 'used_size' => 0, 'used_percentage' => 0, ); while ($e = zip_read($z)) { $update['files']++; $update['compressed_size'] += zip_entry_compressedsize($e); $update['uncompressed_size'] += zip_entry_filesize($e); $fn = zip_entry_name($e); if (in_array($fn, $files)) continue; $files[] = $fn; $update['used_files']++; $update['used_size'] += zip_entry_compressedsize($e); } $update['used_percentage'] = 100*$update['used_size']/$update['compressed_size']; $totalFileSizes += $update['file_size']; $totalCompressed += $update['compressed_size']; $totalUncompressed += $update['uncompressed_size']; $totalUsed += $update['used_size']; } echo "List of current updates:\n\n"; foreach (array_reverse($updates) as $update) printf("%-{$maxFnLen}s %s %5u kb %5u kb %6.2f%% used (%u/%u files)\n", $update['file'], $update['hash'], $update['file_size']/1024, $update['uncompressed_size']/1024, $update['used_percentage'], $update['used_files'], $update['files']); printf(' Amount of data: %6u kb (+%u kb zip file overhead) Uncompressed: %6u kb Obsoleted data: %6u kb (%.2f%%)', $totalCompressed / 1024, ($totalFileSizes - $totalCompressed) / 1024, $totalUncompressed / 1024, ($totalCompressed - $totalUsed) / 1024, (1 - $totalUsed / $totalCompressed) * 100); ?>