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

Laravel结合MongoDB如何正确获取并打印数组字段options

问题分析与解决方案

你遇到的问题根源在于options字段的结构:它是一个数组,每个元素都是只包含单个键值对的对象(比如第一个是{"A":"dfd"},第二个是{"B":"fdf"}),并不是每个对象都有A这个属性。所以当你循环到第二个或第三个option时,尝试访问$option->A就会报错——因为这些对象根本没有A属性,自然会抛出“Trying to get property 'A' of non-object”的错误。

正确的实现方式

方式1:灵活遍历所有选项(推荐)

不管选项的键是A/B/C还是其他,直接遍历每个option的键和值,这样扩展性更好,后续新增选项也不用修改代码:

<td>
    @foreach($question->options as $option)
        {{-- 遍历单个option对象里的键值对 --}}
        @foreach($option as $optionKey => $optionValue)
            {{ $optionKey }}: {{ $optionValue }}<br>
        @endforeach
    @endforeach
</td>

这段代码会输出:

A: dfd
B: fdf
C: fdfdf

方式2:按指定键输出(适合固定选项的场景)

如果你确定选项只会是A/B/C,也可以逐个判断键是否存在后输出:

<td>
    @foreach($question->options as $option)
        @if(property_exists($option, 'A'))
            A: {{ $option->A }}<br>
        @endif
        @if(property_exists($option, 'B'))
            B: {{ $option->B }}<br>
        @endif
        @if(property_exists($option, 'C'))
            C: {{ $option->C }}<br>
        @endif
    @endforeach
</td>

这种方式适合选项固定的场景,但如果后续新增选项(比如D),需要手动添加对应的判断逻辑。

额外小提示

注意到你文档里的answere拼写错误,正确的拼写应该是answer,虽然这不是当前问题的核心,但修正后能避免后续可能的混淆~

内容的提问来源于stack exchange,提问作者Amalendu Kar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:47:37