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

PHP处理JSON响应中EAN/PLU数组字段取值问题求助

解决JSON数组字段(ean/plu)被转为布尔值的问题

问题根源在于:你直接将数组类型的ean和plu字段赋值给变量,当后续存入数据库时,PHP会自动把非空数组转换为布尔值true(对应数据库中的1),空数组转换为false(对应数据库中的0),导致无法正确存储实际值。

解决方案

针对数组类型的字段,需要显式提取数组内的元素,同时处理空数组的场景:

  • 如果ean数组只会有单个元素,直接取第一个元素;若为空数组,可设为null或空字符串(根据数据库字段定义调整)
  • plu字段同理,根据业务需求处理空数组的情况

修改后的代码示例

$data = json_decode($response, true);
foreach($data["data"] as $row){
    $categoryid = $row["_categoryId"];
    $productid = $row["id"];
    $name = $row["name"];
    // 处理ean字段:取第一个元素,空数组则设为null
    $ean = !empty($row["ean"]) ? $row["ean"][0] : null;
    // 处理plu字段:空数组设为null,若有多个元素可改用implode(',', $row["plu"])转为字符串
    $plu = !empty($row["plu"]) ? $row["plu"][0] : null;
    $externalid = $row["externalId"];
    $units = $row["unit"];
    $unitsmeasurment = $row["unitMeasurement"];
    $packaging = $row["packaging"];
    $packagingmeasurment = $row["packagingMeasurement"];
}

扩展说明

如果ean或plu数组可能包含多个元素,可使用implode()将数组转为逗号分隔的字符串,比如:

$ean = !empty($row["ean"]) ? implode(',', $row["ean"]) : null;

这样能把多个值合并为一个字符串存入数据库,后续读取时也可以用explode()拆分。

内容的提问来源于stack exchange,提问作者Jiří Liška

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:45:46