// ================== TASK 3 ================== // ZIP File Processing // ================== MAIN PROCESSING FUNCTION ================== function processDataset($baseDir) { // Find dataset folder $datasetDir = null; $items = scandir($baseDir); foreach ($items as $item) { if ($item != '.' && $item != '..' && is_dir($baseDir . '/' . $item)) { $subPath = $baseDir . '/' . $item; if (file_exists($subPath . '/classes.txt')) { $datasetDir = $subPath; break; } $subItems = scandir($subPath); foreach ($subItems as $subItem) { if ($subItem != '.' && $subItem != '..' && is_dir($subPath . '/' . $subItem)) { if (file_exists($subPath . '/' . $subItem . '/classes.txt')) { $datasetDir = $subPath . '/' . $subItem; break; } } } if ($datasetDir) break; } } // Read classes.txt $classesFile = $datasetDir . '/classes.txt'; $classes = file($classesFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $classNumbers = array_map('trim', $classes); // Process subfolders $subfolders = ['train', 'validate', 'test']; $results = []; $totals = array_fill_keys($classNumbers, 0); foreach ($subfolders as $subfolder) { $subPath = $datasetDir . '/' . $subfolder; if (!is_dir($subPath)) { $results[$subfolder] = ['error' => "Folder '$subfolder' not found"]; continue; } $counts = array_fill_keys($classNumbers, 0); $files = scandir($subPath); foreach ($files as $file) { if ($file != '.' && $file != '..' && pathinfo($file, PATHINFO_EXTENSION) == 'txt') { $content = file_get_contents($subPath . '/' . $file); $lines = explode("\n", $content); foreach ($lines as $line) { $line = trim($line); if (empty($line)) continue; $parts = preg_split('/\s+/', $line); if (!empty($parts)) { $firstNumber = $parts[0]; if (in_array($firstNumber, $classNumbers)) { $counts[$firstNumber]++; $totals[$firstNumber]++; } } } } } $results[$subfolder] = $counts; } // Display results echo "
| Class Number | "; foreach ($subfolders as $subfolder) { echo "" . ucfirst($subfolder) . " | "; } echo "Total | |
|---|---|---|---|
| Class $classNum | "; $rowTotal = 0; foreach ($subfolders as $subfolder) { if (isset($results[$subfolder][$classNum])) { $count = $results[$subfolder][$classNum]; echo "$count | "; $rowTotal += $count; } else { echo "0 | "; } } echo "$rowTotal | "; echo "
| TOTAL | "; foreach ($subfolders as $subfolder) { $subTotal = 0; if (isset($results[$subfolder]) && is_array($results[$subfolder])) { $subTotal = array_sum($results[$subfolder]); } echo "$subTotal | "; } echo "" . array_sum($totals) . " | "; echo "