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

PHP如何基于width列值将二维数组拆分为前轮后轮两个独立数组

实现方案

你可以通过JSON解码+遍历分组+JSON编码的方式完成需求,示例代码如下:

<?php
// 原始JSON字符串,建议提前移除每个对象末尾多余的逗号,避免低版本PHP解析失败
$arr = '[
{
    "id": 4667,
    "brand": "Michelin",
    "model": "Pilot Super Sport",
    "width": "255",
    "height": "35",
    "rim": "19"
},
{
    "id": 4668,
    "brand": "Michelin",
    "model": "Pilot Super Sport",
    "width": "275",
    "height": "35",
    "rim": "19"
},
{
    "id": 4669,
    "brand": "Pirelli",
    "model": "Zero",
    "width": "255",
    "height": "35",
    "rim": "19"
},
{
    "id": 4670,
    "brand": "Pirelli",
    "model": "Zero",
    "width": "275",
    "height": "35",
    "rim": "19"
}]';

// 解码为PHP数组,第二个参数true表示返回关联数组,传false则返回对象
$tireData = json_decode($arr, true);

// 初始化分组
$front = [];
$rear = [];

// 按width字段分组
foreach ($tireData as $item) {
    if ($item['width'] === '255') {
        $front[] = $item;
    } elseif ($item['width'] === '275') {
        $rear[] = $item;
    }
}

// 编码为带格式化的JSON字符串,JSON_UNESCAPED_UNICODE保证中文不转码(此处无中文也可以保留)
$frontJson = json_encode($front, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
$rearJson = json_encode($rear, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
?>

扩展适配方案

如果后续需要适配更多width规格,不需要固定判断255/275,可以动态按width值分组:

$groups = [];
foreach ($tireData as $item) {
    $groups[$item['width']][] = $item;
}
// 此时 $groups['255'] 对应前轮数组,$groups['275'] 对应后轮数组,新增其他width规格也会自动生成对应分组

注意事项

你提供的原始JSON字符串中每个对象的最后一个字段(rim)后多了多余的逗号,PHP 7.3以下版本解析这类JSON会返回null,建议提前处理移除多余逗号,或者在json_decode时添加JSON_PARTIAL_OUTPUT_ON_ERROR参数忽略小格式错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:45:05