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

Laravel 8中json_encode传二维数组到Blade JS时变一维如何解决

问题原因

PHP的json_encode函数默认会将键为从0开始的连续数字的索引数组转换为JSON数组,其余情况(索引不连续、键为字符串)都会转换为JSON对象。你遇到的输出为{"0": {...}}的情况,本质是原PHP数组的索引不是连续从0开始的,所以被识别为关联数组转为了JSON对象。

解决方法

  1. 首先移除代码中包裹json_encode返回值的单引号:json_encode输出的结果本身就是合法的JS字面量,套单引号会直接将其转为字符串,无法作为数组/对象使用。
  2. 输出前用array_values()重置数组索引,确保数组键为从0开始的连续数字,这样json_encode就会自动输出JSON数组:
slidersAdImageKeys: {!! json_encode(array_values($slidersAdImageKeys)) !!},
  1. 如果需要额外处理转义问题,可以添加对应的flag参数,比如保留中文、不转义斜杠:
slidersAdImageKeys: {!! json_encode(array_values($slidersAdImageKeys), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) !!},

Laravel专属简化写法

Laravel 8 提供了原生的@json Blade指令,不用手动写{!! !!},安全性更高:

slidersAdImageKeys: @json(array_values($slidersAdImageKeys)),

需要传flag的话直接作为第二个参数传入即可:

slidersAdImageKeys: @json(array_values($slidersAdImageKeys), JSON_UNESCAPED_UNICODE),

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 01:06:02