php - 数组重新拼装 求教

查看:98
本文介绍了php - 数组重新拼装 求教的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

[0]=>
  array(5) {
    ["id"]=>
    string(1) "2"
    ["title1"]=>
    string(6) "颜色"
    ["content1"]=>
    string(4) "红2"
    ["title2"]=>
    string(6) "尺码"
    ["content2"]=>
    string(2) "XL"
  }
[1]=>
  array(5) {
    ["id"]=>
    string(1) "1"
    ["title1"]=>
    string(6) "颜色"
    ["content1"]=>
    string(4) "红1"
    ["title2"]=>
    string(6) "尺码"
    ["content2"]=>
    string(1) "L"
  }
[2]=>
  array(5) {
    ["id"]=>
    string(1) "3"
    ["title1"]=>
    string(6) "颜色"
    ["content1"]=>
    string(4) "红3"
    ["title2"]=>
    string(6) "尺码"
    ["content2"]=>
    string(3) "XXL"
  }
  
  
  
  
  拼装成这样
       array(5) {
    ["title1"]=>
    string(6) "颜色"
    ["content1"]=>
            array(5) {
                ["id"]=>
                string(1) "2"
                ["content1"]=>
                string(4) "红2"
                   ["id"]=>
                string(1) "1"
                ["content1"]=>
                string(4) "红1"
                ["id"]=>
                string(1) "3"
                ["content1"]=>
                string(4) "红3"
              }
    ["title2"]=>
    string(6) "尺码"
    ["content2"]=>
            array(5) {
                ["id"]=>
                string(1) "2"
                ["content2"]=>
                string(4) "XL"
                   ["id"]=>
                string(1) "1"
                ["content2"]=>
                string(4) "L"
                ["id"]=>
                string(1) "3"
                ["content2"]=>
                string(4) "XXL"
              }
  }

解决方案

题主的想要拼装的部分有问题,以content1为例:

 ['content1'] => [
        'id'=>2,
        'content1'=>'红2',
        'id'=>1,
        'content1'=>'红1',
        'id'=>3,
        'content1'=>'红3',
    ]

这样最终只能保留id为3的数据。
我猜题主应该需要的是这样:

 ['content1'] => [
        ['id'=>2,'content1'=>'红2'],
        ['id'=>1,'content1'=>'红1'],
        ['id'=>3,'content1'=>'红3'],
    ]

那么,史上最垃圾的写法来啦,建议题主自己跑一下下面的代码。

原始数组:

$arr = [
        ['id'=>2,'title1'=>'颜色','content1'=>'红2','title2'=>'尺码','content2'=>'XL'],
        ['id'=>1,'title1'=>'颜色','content1'=>'红1','title2'=>'尺码','content2'=>'L'],
        ['id'=>1,'title1'=>'颜色','content1'=>'红3','title2'=>'尺码','content2'=>'XXL']
    ];

我写的代码:

$newArr = [];
foreach($arr as $k=>$v)
{
    $keyArr = array_keys($v);
    $valueArr = array_values($v);
    foreach($keyArr as $key=>$val)
    {
        if((strstr($val, 'title') || strstr($val, 'content')) && !array_key_exists($val, $newArr)) 
            $newArr[$val] = strstr($val, 'title') ? $valueArr[$key] : [];

        if(strstr($val, 'content'))
        {
            foreach($arr as $ke=>$va)
            {
                $newArr[$val][$ke]['id'] = $va['id'];
                $newArr[$val][$ke][$val] = $va[$val];
            }
        }
    }
}

不才,代码写的不好,还望题主见谅,大神别打我脸。

这篇关于php - 数组重新拼装 求教的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆