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

如何将SQL数组类型字段值转换为PHP数组?

解决json_decode解析特殊字符串返回空的问题

你遇到的问题根源是$customlabel的格式并非标准JSON:

  • JSON数组要求用方括号[]包裹,但你的字符串用了大括号{}
  • JSON规范里所有字符串必须用双引号包裹,但new和de没有双引号,导致json_decode无法识别结构,返回空值。

下面提供两种可行的解决办法:

方法一:修正为标准JSON格式后解析

通过字符串替换和正则处理,把原格式转换成符合JSON规范的结构,再用json_decode解析:

$customlabel = "{new,\"tree test123\",de}";
// 替换大括号为方括号
$fixedStr = str_replace(['{', '}'], ['[', ']'], $customlabel);
// 给未被双引号包裹的单词添加双引号
$fixedStr = preg_replace('/(?<!")(\w+)(?!")/', '"$1"', $fixedStr);
// 解析为PHP数组
$result = json_decode($fixedStr, true);
print_r($result);

执行后会得到正确数组:Array ( [0] => new [1] => tree test123 [2] => de )

方法二:直接按规则拆分字符串

如果这个字段的格式固定为{元素1,元素2,...},可以直接拆分处理,避免依赖JSON解析:

$customlabel = "{new,\"tree test123\",de}";
// 移除首尾的大括号
$trimmed = trim($customlabel, '{}');
// 拆分元素(忽略双引号内的逗号)
$items = preg_split('/,(?=(?:[^"]*"[^"]*")*[^"]*$)/', $trimmed);
// 去除每个元素的首尾引号
$result = array_map(fn($item) => trim($item, '"'), $items);
print_r($result);

这个方法更灵活,即使元素内部包含逗号(比如"tree,test123")也能正确拆分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:35:17