getFilesRecursively($directory); //dd($needExchangeTopics); $dataCount = count($needExchangeTopics); $this->info('开始转换'); $this->info("总共有:{$dataCount} 套题需要转换"); $bar = $this->output->createProgressBar($dataCount); foreach ($needExchangeTopics as $needExchangeTopic) { $this->createdFile($needExchangeTopic['directory'], $needExchangeTopic['fileName']); $this->putRow($head); $data = file_get_contents($needExchangeTopic['data']); $data = json_decode($data, true); foreach ($data['data'] as $item) { //真题组名称: $groupName = $item['groupName']; $paperQuestions = $item['paperQuestionVos']; foreach ($paperQuestions as $value) { //题目类型 $style = $value['style']; $styleName = $this->getStyleName($style); //dd($styleName); //题目 $title = ''; if (!empty($value['exerciseQuestionsTopicPo'])) { $title = $value['exerciseQuestionsTopicPo']['content'] . "\r\n"; } $title = $title . $value['title']; //解析 $explain = $value['explain']; //准确率 $accuracy = $value['accuracy']; // $correctAnswerStr = ''; //正确选项Str $correctAnswers = []; //正确答案数据 $selectAContent = ''; $selectBContent = ''; $selectCContent = ''; $selectDContent = ''; $selectEContent = ''; //考点 $examPointStr = ''; $examPointNames = []; $examPoints = $value['points']; foreach ($examPoints as $examPoint) { $examPointNames [] = $examPoint['name']; } $examPointStr = implode(',', $examPointNames);//考点 //dd($examPointStr); //$answerFlag = false; // $answer = $data['answer']; // // if (in_array($answer, $answerArray)) { // $answerFlag = true; //获取answer成功 // } $questionCount = $value['questionCount']; //选项数量 //获取选项: $questionsOptionsPos = $value['questionsOptionsPos']; foreach ($questionsOptionsPos as $key => $item) { if ($key == 0 && $key <= $questionCount - 1) { $selectAContent = $item['option']; if ($item['isTrue'] == true) { $correctAnswers [] = 'A'; } } elseif ($key == 1 && $key <= $questionCount - 1) { $selectBContent = $item['option']; if ($item['isTrue'] == true) { $correctAnswers [] = 'B'; } } elseif ($key == 2 && $key <= $questionCount - 1) { $selectCContent = $item['option']; if ($item['isTrue'] == true) { $correctAnswers [] = 'C'; } } elseif ($key == 3 && $key <= $questionCount - 1) { $selectDContent = $item['option']; if ($item['isTrue'] == true) { $correctAnswers [] = 'D'; } } elseif ($key == 4 && $key <= $questionCount - 1) { $selectEContent = $item['option']; if ($item['isTrue'] == true) { $correctAnswers [] = 'E'; } } } $correctAnswerStr = implode(',', $correctAnswers); //正确答案 //dd($correctAnswerStr); $exportData = []; $exportData['groupName'] = $groupName; $exportData['style'] = $styleName; $exportData['title'] = $title; $exportData['selectA'] = $selectAContent; $exportData['selectB'] = $selectBContent; $exportData['selectC'] = $selectCContent; $exportData['selectD'] = $selectDContent; $exportData['selectE'] = $selectEContent; $exportData['answer'] = $correctAnswerStr; $exportData['explain'] = $explain; $exportData['accuracy'] = $accuracy; $exportData['point'] = $examPointStr; $this->putRow($exportData); } } $this->closeFile(); $bar->advance(); } $bar->finish(); $this->info(''); $this->info('导出完成'); } public function getStyleName($style) { if ($style == 6) { $styleName = '配伍题'; } elseif ($style == 2) { $styleName = '单选题'; } elseif ($style == 3) { $styleName = '多选题'; } else { $styleName = $style; } return $styleName; } public function getFilesRecursively($directory) { // 检查目录是否存在 if (!is_dir($directory)) { return "目录不存在"; } // 获取目录下的所有文件和子目录 $files = scandir($directory); // 过滤掉 "." 和 ".."(当前目录和上一级目录) $files = array_diff($files, array('.', '..')); $result = []; foreach ($files as $file) { // 拼接完整的文件路径 $filePath = $directory . DIRECTORY_SEPARATOR . $file; // 判断是否为文件 if (is_file($filePath)) { // 过滤掉文件名中包含“数据源”的文件 if (strpos($file, '数据源') === false) { // 获取文件名的主名称(去除.txt后缀) $fileNameWithoutExtension = pathinfo($file, PATHINFO_FILENAME); // 获取文件所在的目录路径 $fileDir = dirname($filePath); // 获取文件的大小 $fileSize = filesize($filePath); $result[] = [ 'fileName' => $fileNameWithoutExtension, // 文件名(去除.txt后缀) 'data' => $filePath, // 完整路径 'directory' => $fileDir, // 文件所在目录 'size' => $fileSize // 文件大小 ]; } } elseif (is_dir($filePath)) { // 如果是目录,则递归调用 $result = array_merge($result, $this->getFilesRecursively($filePath)); } } return $result; } }