先说说核心判断:在构建 API 或进行前后端数据交互时,JSON 格式的一致性直接影响着接口的可用性。不少开发者会在数组与字符串的转换上栽跟头——明明想要一个数组,结果得到的却是个字符串。

具体到这个场景:你有一段 PHP 代码,用 `'tgas' => $tagsoutput` 这种方式直接把逗号分隔的字符串赋值给了键 `tgas`。这样一来,最终 JSON 输出的会是 `"tgas":"tag1,tag2,tag3"`,一个纯字符串,而非期待的 `["tag1", "tag2", "tag3"]` 数组格式。

问题的症结很清楚:要想产出 `{"tgas": ["tag1", "tag2", "tag3"]}` 这样的结构,必须先把原始字符串按逗号解析成 PHP 的索引数组,剩下的事情交给 `json_encode()` 就好——它能自动把索引数组序列化为 JSON 数组。这其实是个很标准的数据预处理流程。

正解:用 explode() 拆分字符串

直接看代码会更直观:

 $title,
    'plot'      => strip_tags($description),
    'storline'  => strip_tags($storyline), // ⚠️ 字段名疑似拼写错误,可能是 'storyline'
    'tgas'      => explode(',', $tagsoutput) // ✅ 返回 ['tag1', 'tag2', 'tag3']
);
$rt = json_encode($response, JSON_UNESCAPED_UNICODE); // 推荐 JSON_UNESCAPED_UNICODE,替代废弃的 true

需要注意几个细节:

'tgas' => !empty($tagsoutput) ? array_filter(array_map('trim', explode(',', $tagsoutput))) : []

这条处理链路执行了三件事:先用 `explode()` 拆分,再用 `array_map('trim', ...)` 去除每项的首尾空格,最后用 `array_filter()` 过滤掉空值。

小结

JSON 数组的生成说到底依赖的是 PHP 的数据结构本身。只要 `tgas` 对应的值是一个索引数组,`json_encode()` 就会准确输出方括号格式。把 `explode()`、`array_map('trim', ...)` 和 `array_filter()` 这三个函数组合起来用,处理标签类字符串的转换基本就够用了——干净、准确,且不容易出错。

本文转载于:https://www.php.cn/faq/2333041.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。