You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 16:54:03