Laravel构造slickQuiz所需嵌套数组出现语法错误求助
错误原因
PHP语法不支持在数组字面量定义的过程中直接嵌入foreach循环生成子元素,你将嵌套foreach放在"a" => [内部不符合语法规范,所以抛出解析错误。
解决方案1:嵌套循环分步构造数组
外层遍历问题时先单独生成选项数组,再组装到题目的完整结构中:
$jsondata = []; foreach ($questions as $q) { // 先构造当前题的选项数组 $answers = []; foreach ($q->answers as $a) { $answers[] = [ "option" => $a->content, "correct" => $a->correct ]; } // 组装slickQuiz要求的完整结构 $jsondata[] = [ "q" => $q->content, "a" => $answers, // 可替换为你实际存储的答对、答错提示字段 "correct" => "<p><span>回答正确!</span>你答对了这道题</p>", "incorrect" => "<p><span>回答错误</span>再试一次吧</p>" ]; } // 直接返回符合要求的json响应即可 return response()->json($jsondata);
解决方案2:Laravel集合简化写法(更推荐)
Laravel查询返回的结果本身是集合实例,可以用map方法直接转换格式,代码更简洁:
$jsondata = $questions->map(function ($q) { return [ "q" => $q->content, "a" => $q->answers->map(function ($a) { return [ "option" => $a->content, "correct" => $a->correct ]; })->all(), // 转为普通数组 // 可替换为你实际存储的答对、答错提示字段 "correct" => "<p><span>回答正确!</span>你答对了这道题</p>", "incorrect" => "<p><span>回答错误</span>再试一次吧</p>" ]; })->all(); return response()->json($jsondata);
内容的提问来源于stack exchange,提问作者DSmith
相关产品推荐
相关产品推荐

