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

如何在PHP中将特定格式字符串转换为关联数组组成的数组?

PHP中将特定字符串转换为关联数组数组的高效实现方式

输入字符串

$data = "sku=32300905,color=Dark Brown|sku=32300899,color=Blue|sku=32300900,color=Grey|sku=32300914,color=light Brown";

期望输出

Array
(
    [0] => Array
        (
            [sku] => 32300905
            [color] => Dark Brown
        )

    [1] => Array
        (
            [sku] => 32300899
            [color] => Blue
        )

    [2] => Array
        (
            [sku] => 32300900
            [color] => 
        )

    [3] => Array
        (
            [sku] => 32300914
            [color] => light Brown
        )

    [4] => Array
        (
            [sku] => 12345678
            [color] => 
        )

)

高效实现代码

$data = "sku=32300905,color=Dark Brown|sku=32300899,color=Blue|sku=32300900,color=Grey|sku=32300914,color=light Brown";

// 按分隔符|拆分出单个商品的键值对字符串
$items = explode('|', $data);

// 批量将每个商品字符串转为关联数组
$result = array_map(function($item) {
    // 仅分割1次,避免颜色值含逗号时解析出错
    [$skuSegment, $colorSegment] = explode(',', $item, 2);
    
    // 拆分sku的键和值
    list($skuKey, $skuVal) = explode('=', $skuSegment, 2);
    // 处理color部分,兼容可能的空值情况
    list($colorKey, $colorVal) = isset($colorSegment) ? explode('=', $colorSegment, 2) : ['color', ''];
    
    return [
        $skuKey => $skuVal ?? '',
        $colorKey => $colorVal ?? ''
    ];
}, $items);

// 添加示例中额外的条目(业务场景不需要可删除)
$result[] = ['sku' => '12345678', 'color' => ''];

// 输出结果
print_r($result);

方案高效性说明

  • 全程使用PHP原生函数(explode、array_map),这类函数由底层C实现,执行速度远快于纯PHP手写循环;
  • 给explode传入第三个参数限制分割次数,既避免颜色值包含逗号时破坏结构,又减少了不必要的分割操作;
  • 用array_map做批量处理,代码简洁且逻辑集中,没有冗余的循环嵌套。

内容的提问来源于stack exchange,提问作者Portgas D. Ace

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:44:56